
A. 아이그루스와 화장실
안뇽이는 $K$가 홀수이면 $K$층, 짝수이면 $K - 1$층으로 가면 됩니다.
인덕이는 $K$가 짝수이면 $K$층, $K = 1$이면 $2$층, 아니면 $K - 1$층으로 가면 됩니다.
1 | |
B. 중복된 숫자
$1$부터 $N - 1$까지의 합에 $A$의 원소를 모두 빼면 중복되는 수와 부호가 반대인 수가 됨을 알 수 있습니다.
파이썬에서 정수들을 한 줄에 한번에 입력받으면 메모리 초과를 받으므로 sys.stdin.read를 이용해서 정수를 하나씩 읽어 메모리를 절약했습니다.
1 | |
C. The primes contain arbitrarily long arithmetic progressions
초항이 $2$고 공차가 $0$인 등차수열을 출력하면 됩니다.
1 | |
D. 어두운 굴다리
가로등의 높이는 최소 $\max(x_1, N - x_M)$이어야 합니다.
임의의 두 가로등 사이에 비춰지지 않는 곳이 존재하면 안 되므로 $i = 1$부터 $N - 1$까지 $i$번째 가로등과 $i + 1$번째 가로등 사이가 모두 비춰질 때 까지 가로등을 높여줍시다.
가로등의 높이가 $N$이 되면 모두 비출 수 있으므로 가로등의 높이는 최대 $N$번 증가하고 따라서 시간 복잡도 $\mathcal{O}(N)$에 해결할 수 있습니다.
1 | |
E. 서바이벌
선분들이 단순다각형을 이루려면 $s_{i + 1}$번 학생이 $s_i$번 학생에게 총을 쏘면 안 되므로 $s_i$와 $s_{i + 1}$ 사이의 거리보다 $s_{i + 1}$과 $s_{i + 2}$ 사이의 거리가 더 짧거나 같아야 합니다.
그렇다면 $s_1$와 $s_2$ 사이의 거리보다 $s_M$과 $s_1$ 사이의 거리가 더 짧거나 같아야 합니다. 만약 더 짧다면 $s_1$번 학생이 $s_2$번 학생에게 총을 쏘았다는 것에 모순되므로 모든 선분의 길이는 같아야 합니다.
그러나 거리가 같은 경우 번호가 큰 학생에게 총을 쏘아야 하므로 번호가 단조 증가/감소해야 합니다. 이때 규칙에 따라 $s_i$가 최대인 학생에게 총을 쏘는 학생이 정확하게 두 명 존재해야 하고, $s_i$가 최대인 학생은 그 두 학생 중 하나에게 총을 쏘아야 하므로 선분이 겹치게 되고 이는 각 총알의 경로가 양 끝점 이외의 다른 점에서 다른 경로와 만나지 않는다는 것과 모순입니다.
따라서 단순다각형을 이루도록 하는 입력은 존재하지 않습니다.
1 | |
F. 도어맨
남자와 여자의 수 차이가 줄어든다면 두 번째 사람을 먼저 입장시키는 것이 이득이고, 그렇지 않으면 어떤 사람을 먼저 입장시키든 상관 없습니다.
1 | |
G. 레벨 햄버거
레벨-$N$ 버거에 들어있는 패티의 개수를 $P_N$이라 하면 $P_N = 2P_{N - 1} + 1$입니다.
레벨-$N$ 버거의 레이어의 수를 $L_N$이라 하면 $L_N = 2L_{N - 1} + 3$입니다.
동적 계획법을 이용해서 $P_N$과 $L_N$을 전처리해 두고 재귀적으로 레이어 개수 $X$이하인 부분의 패티의 개수를 구해주면 됩니다.
1 | |
H. 그리드 게임
지문에 오류가 있습니다. 자세한 내용은 게시판 글을 참조해 주세요.
너비 우선 탐색으로 탐색한 곳의 개수를 세면 됩니다.
1 | |