구현 4

[백준] 28217 (두 정삼각형)

문제 요약i번째 줄에 i개의 수(0 또는 1)를 배치한 정삼각형 A, B가 주어집니다. i의 최댓값은 N으로 주어집니다. N은 10 이하입니다.A를 원하는 만큼 회전 및 대칭시킬 수 있을 때, B와 동일한 위치에 있는 수의 값이 다른 위치의 개수의 최솟값을 계산해야 합니다.해설해설에 들어가기 전에 2차원 배열에 대해 명확히 해야 할 것이 있습니다. 이 문제를 포함해 일반적으로 2차원 배열을 입력받을 때 다음과 같이 구현합니다.for (int i = 0; i > A[i][j]; }}그런데 입력은 다음과 같이 들어옵니다.A[0][0]A[1][0] A[1][1]A[2][0] A[2][1] A[2][2]따라서 A[i][j]에서 '아래쪽으로 한 칸' 이동하면 A[i + 1][j]이고, '오른쪽으로 한 칸' ..

[백준] 31430 (A+B - 투 스텝)

문제 요약이 문제는 투 스텝 문제로, 한 번 채점할 때 프로그램을 2번 실행하는 형식입니다. 두 번의 실행은 서로 독립적입니다.첫 번째 실행에서는 음 아닌 정수 A, B가 주어지며, 소문자 알파벳으로 구성된 길이가 13인 문자열을 출력해야 합니다.두 번째 실행에서는 첫 번째 실행에서 출력한 문자열만 주어지며, A+B의 값을 출력해야 합니다.해설소문자 알파벳으로 구성된 길이가 13인 문자열만으로 두 정수의 합을 나타내야 하므로, 결국 문자열과 숫자를 서로 변환하는 문제를 풀어야 하는 것과 같습니다.소문자 알파벳은 26가지밖에 없는데, 13개를 쓴다면 $2\times 10^{18}$보다 작거나 같은 음 아닌 정수를 모두 표현할 수 있을까요? 다행히 $26^{13}$은 2,481,152,873,203,736,..

[백준] 1193 (분수찾기)

문제 요약무한히 큰 2차원 배열에 다음과 같이 분수들이 적혀 있습니다.1/11/21/31/41/5...2/12/22/32/43/13/23/34/14/25/1...이와 같이 나열된 분수들을 1/1 → 1/2 → 2/1 → 3/1 → 2/2 → … 과 같이 지그재그 순서로 차례대로 1번, 2번, 3번, 4번, 5번, … 분수라고 합시다. 정수 X가 주어졌을 때, X번 분수를 계산해야 합니다.X의 범위는 100만까지입니다.해설X번 분수가 D번째 대각선에 있다고 해 봅시다. 두 가지 관찰을 할 수 있습니다:D번째 대각선에는 D개의 분수가 있습니다. 따라서 D번째 대각선의 마지막 번호는 정확히 $\frac{D(D+1)}{2}$가 됩니다.D의 값을 알고 있다면, D의 홀짝성에 따라 분자/분모의 증가 방향이 달라지므..

[백준] 10250 (ACM 호텔)

문제 요약호텔에서 손님이 오는 순서대로 방을 배정하는데, 각 층별로 1호실 앞에 있는 엘리베이터 문으로부터 걷는 거리가 짧은 방을 먼저 배정합니다. 단, 거리가 같은 경우에는 층수가 낮은 방을 먼저 배정합니다. 즉 12층짜리 호텔이라면 101, 201, …, 1201호를 먼저 온 12명에게 다 배정하고 13번째 손님에게 102호를 배정하게 됩니다.호텔의 층수 H, 호수 W가 주어졌을 때 N번째 손님에게 배정되어야 하는 방 번호를 구해야 합니다.해설N번째 손님에게 배정되는 방의 층수와 호수를 독립적으로 계산할 수 있습니다.문제의 조건에 따라 i층 j호실은 (j - 1) * H + i번째 손님에게 배정되고, i는 항상 H보다 작거나 같은 정수이므로, N - 1 = (j - 1) * H + (i - 1)에서 ..