목록데이터 엔지니어링 정복 (375)
지구정복
https://www.acmicpc.net/problem/2775 2775번: 부녀회장이 될테야 첫 번째 줄에 Test case의 수 T가 주어진다. 그리고 각각의 케이스마다 입력으로 첫 번째 줄에 정수 k, 두 번째 줄에 정수 n이 주어진다 www.acmicpc.net -문제해설 다이나믹 프로그래밍을 이용해서 풀었다. d라는 배열을 만들고 행은 k+1까지, 열은 n까지 크기로 만든다. d = new int[k+1][n]; 그리고 이중포문을 순회한다. 이때 행을 i, 열을 j라고 하면 i=0일때 즉 0행일 때는 d[0][0], d[0][1], d[0][2]에 각각 1, 2, 3이 들어가도록 한다. 그리고 j=0일 때 즉 0열일 때는 항상 1이므로 d[0][0], d[1][0], d[2][0]에 모두 1이..
https://www.acmicpc.net/problem/2292 2292번: 벌집 위의 그림과 같이 육각형으로 이루어진 벌집이 있다. 그림에서 보는 바와 같이 중앙의 방 1부터 시작해서 이웃하는 방에 돌아가면서 1씩 증가하는 번호를 주소로 매길 수 있다. 숫자 N이 주어졌 www.acmicpc.net -문제해설 1일 때는 벌집 1개 2부터 7까지는 벌집 2개 8부터 19까지는 벌집 3개 20부터 37까지는 벌집 4개 38부터 61까지는 벌집 5개 . . . 이 필요하므로 d라는 배열에 벌집수를 저장한다. d[1]=1, d[2]=7, d[3]=19, d[4]=37, d[5]=61 규칙을 확인해보면 d[i]=d[i-1] + 6*(i-1) 인 것을 알 수 있다. d[6]을 구해보면 d[6] = d[5] + ..
https://www.acmicpc.net/problem/2231 2231번: 분해합 어떤 자연수 N이 있을 때, 그 자연수 N의 분해합은 N과 N을 이루는 각 자리수의 합을 의미한다. 어떤 자연수 M의 분해합이 N인 경우, M을 N의 생성자라 한다. 예를 들어, 245의 분해합은 256(=245+2+4+5)이 www.acmicpc.net -문제해설 맨 처음에는 1부터 입력된 값까지 반복문으로 순회하면 분해합을 구했는데 범위를 축소시킬 수 있었다. 예를들어 입력된 값이 네 자리 정수 K라고하고 K의 생성자를 W라고 하면 K = W + W1 + W2 + W3 + W4 가 될 것이다. 이때 W의 각 자리수를 모두 좌변으로 넘기면 K - (W1 + W2 + W3 + W4) = W가 된다. 즉 K의 생성자인 W..
https://www.acmicpc.net/problem/10250 10250번: ACM 호텔 프로그램은 표준 입력에서 입력 데이터를 받는다. 프로그램의 입력은 T 개의 테스트 데이터로 이루어져 있는데 T 는 입력의 맨 첫 줄에 주어진다. 각 테스트 데이터는 한 행으로서 H, W, N, 세 정수 www.acmicpc.net -문제해설 그냥 입력받은 값을 수학적으로 구현했다. 층수 값을 만들고 호수 값을 더했다. 예를 들어 문제의 예시인 6 12 10인 경우 400 을 만들고 2를 만들어서 402를 출력했다. 먼저 층수 값을 만드는 방법은 두 가지로 나눠진다. 만약에 n%h가 0인경우와 n%h!=0인 경우로 나눠진다. n%h==0 인 경우는 ( n-h * ((n/h)-1) ) * 100 이고 n%h!=0 ..