>문제 > 핵심 반복문 돌면서 일일히 비교하기 >풀이과정 구조체로 몸무게, 키, 등수를 묶어서 값을 입력받고, 이중반복문을 돌면서 나보다 덩치가 큰 사람이 있으면 등수를 +1 한다. 크게 어렵지 않은 문제였다. >깨달은점 이 문제가 초등부 문제라는데에 충격받았다. 초등학생도 푸는걸 대학생이 못풀면 진짜 망신 망신 개망신당할 것 같다.. 공부 열심히하자.. >코드 #define _CRT_SECURE_NO_WARNINGS #include typedef struct { int weight; int height; int rank; }student; int main() { int i, j, n; student list[50]; scanf("%d", &n); for (i = 0; i < n; i++) { scanf..
>문제 N개의 수가 주어졌을 때, 이를 오름차순으로 정렬하는 프로그램을 작성하시오. [입력] 첫째 줄에 수의 개수 N(1 ≤ N ≤ 1,000,000)이 주어진다. 둘째 줄부터 N개의 줄에는 숫자가 주어진다. 이 수는 절댓값이 1,000,000보다 작거나 같은 정수이다. 수는 중복되지 않는다. > 핵심 O(nlogn) 정렬방법 사용 / 중복처리 >풀이과정 합병정렬로 풀다가 merge 함수 부분에서 임시로 정렬된 값을 받을 tmp 배열을 calloc으로 할당하고 싶었는데 무슨 문제에선지 컴파일 에러가 자꾸 떴다. 할당 크기를 right가 아니라 (right + 1) 으로 하니 해결되었다. 그리고 qsort 함수 쓰니 정말 편하다. 앞으로도 애용해야겠다. 다만 주의해야 할게 형변환을 할때 int compar..
>문제 두 개의 자연수를 입력받아 최대 공약수와 최소 공배수를 출력하는 프로그램을 작성하시오. [입력] 첫째 줄에는 두 개의 자연수가 주어진다. 이 둘은 10,000이하의 자연수이며 사이에 한 칸의 공백이 주어진다. > 핵심 최대공약수, 최소공배수 개념 알기 최소공배수는 a * b / gcd(a,b) 로 구할 수도 있다. >풀이과정 최대공약수와 최소공배수. 대 1때 코딩 처음 배울때 만들어봤던 기억이 난다. 근데 문제를 보니 이거 중등부, 고등부 문제에 출제된 문제라고 한다. 난 중학생때 코딩이 뭔지도 모르고 C언어, 파이썬은 듣도보도 못했었는데.. 세상에 마상에 아무튼 풀고 나서 다른사람이 한 코드를 봤는데 "유클리드 호제법"이라는 알고리즘을 사용한 사람이 있었다. 나도 얼핏 알고리즘 기본서에서 봤던 ..
>문제 [중략] 종말의 숫자란 어떤 수에 6이 적어도 3개이상 연속으로 들어가는 수를 말한다. 제일 작은 종말의 숫자는 666이고, 그 다음으로 큰 수는 1666, 2666, 3666, .... 과 같다. 따라서, 숌은 첫 번째 영화의 제목은 세상의 종말 666, 두 번째 영화의 제목은 세상의 종말 1666 이렇게 이름을 지을 것이다. 일반화해서 생각하면, N번째 영화의 제목은 세상의 종말 (N번째로 작은 종말의 숫자) 와 같다. 숌이 만든 N번째 영화의 제목에 들어간 숫자를 출력하는 프로그램을 작성하시오. 숌은 이 시리즈를 항상 차례대로 만들고, 다른 영화는 만들지 않는다. [입력] 첫째 줄에 숫자 N이 주어진다. N은 10,000보다 작거나 같은 자연수이다. > 핵심 나머지, 나누기 연산 활용하기 >..
>문제 알파벳 소문자로 이루어진 N개의 단어가 들어오면 아래와 같은 조건에 따라 정렬하는 프로그램을 작성하시오. 길이가 짧은 것부터 길이가 같으면 사전 순으로 > 핵심 O(nlogn) 정렬방법을 이용하자(합병정렬, 퀵정렬, 힙정렬) >풀이과정 정렬. 대학교에 처음 들어와서 배우는 버블정렬부터 시작해 알고리즘 시간에 배우는 삽입, 선택정렬, 힙정렬, 합병정렬, 퀵정렬 등등등,, 종류가 참 다양하다. 예전에 수업자료 ppt에 있던거 캡쳐해서 가져왔다. 인터넷에 올려도 되겠지? 정렬도 안해본지 오래되니 다 까먹고 예전에 써뒀던 코드를 보니 너무 낯설었다. 감이 녹슬지 않게 꾸준히 알고리즘을 익혀둬야겠다는 생각이 들었다. 합병정렬은 그나마 뭔가 직관적이고 할만한데 정석적인 퀵정렬을 직접 만드려니 도저히 모르겠어..
>문제 지민이는 자신의 저택에서 MN개의 단위 정사각형으로 나누어져 있는 M*N 크기의 보드를 찾았다. 어떤 정사각형은 검은색으로 칠해져 있고, 나머지는 흰색으로 칠해져 있다. 지민이는 이 보드를 잘라서 8*8 크기의 체스판으로 만들려고 한다. 체스판은 검은색과 흰색이 번갈아서 칠해져 있어야 한다. 구체적으로, 각 칸이 검은색과 흰색 중 하나로 색칠되어 있고, 변을 공유하는 두 개의 사각형은 다른 색으로 칠해져 있어야 한다. 따라서 이 정의를 따르면 체스판을 색칠하는 경우는 두 가지뿐이다. 하나는 맨 왼쪽 위 칸이 흰색인 경우, 하나는 검은색인 경우이다. 보드가 체스판처럼 칠해져 있다는 보장이 없어서, 지민이는 8*8 크기의 체스판으로 잘라낸 후에 몇 개의 정사각형을 다시 칠해야겠다고 생각했다. 당연히 ..
>문제 땅 위에 달팽이가 있다. 이 달팽이는 높이가 V미터인 나무 막대를 올라갈 것이다. 달팽이는 낮에 A미터 올라갈 수 있다. 하지만, 밤에 잠을 자는 동안 B미터 미끄러진다. 또, 정상에 올라간 후에는 미끄러지지 않는다. 달팽이가 나무 막대를 모두 올라가려면, 며칠이 걸리는지 구하는 프로그램을 작성하시오. >핵심 반복문 이외의 방법을 생각하자 나머지를 활용하자 >풀이과정 처음에 문제를 보고, 문제 쉽네 하고 무작정 반복문으로 돌리다가 시간제한이라는 큰 문제에 빠져 고민하게 했던 문제. [정상에 올라간 후에는 미끄러지지 않는다] 그러므로 마지막날에는 내려가는 길이를 계산할 필요가 없다. 또한, 최소 달팽이가 V-A 위치에 있어야 다음날 정상에 다다를 수 있다. 하루에 A를 올라가니까. 그래서 V-A 위..
>문제 상근이는 요즘 설탕공장에서 설탕을 배달하고 있다. 상근이는 지금 사탕가게에 설탕을 정확하게 N킬로그램을 배달해야 한다. 설탕공장에서 만드는 설탕은 봉지에 담겨져 있다. 봉지는 3킬로그램 봉지와 5킬로그램 봉지가 있다. 상근이는 귀찮기 때문에, 최대한 적은 봉지를 들고 가려고 한다. 예를 들어, 18킬로그램 설탕을 배달해야 할 때, 3킬로그램 봉지 6개를 가져가도 되지만, 5킬로그램 3개와 3킬로그램 1개를 배달하면, 더 적은 개수의 봉지를 배달할 수 있다. 상근이가 설탕을 정확하게 N킬로그램 배달해야 할 때, 봉지 몇 개를 가져가면 되는지 그 수를 구하는 프로그램을 작성하시오. www.acmicpc.net/problem/2839 2839번: 설탕 배달 상근이는 요즘 설탕공장에서 설탕을 배달하고 있..