2. A. 은하수벅스
Solution 1 >
Binary search로 받을 수 있는 텀블러의 갯수를 정합니다.
◦ 텀블러는 최소 0개, 최대
𝑆
5
개 받을 수 있습니다.
정한 텀블러 갯수 만큼 받을 수 있는지 확인합니다.
◦ 정한 텀블러 갯수가 M이라 하면,
◦ 여름 음료 스티커가 텀블러 하나당 다섯 장 있어야 하므로, S ≥ 5M인지 확인합니다.
◦ 여름 음료 또는 일반 음료 스티커가 텀블러 하나당 (여름 음료 5장을 포함하여) 12장 있어야
하므로 S - 5M + N ≥ (12 - 5)M인지 확인합니다.
답이 되는 텀블러 갯수 M 중 최댓값을 출력합니다.
시간복잡도: 𝑂(lg 𝑆)
출제자: 정현환
4. B. 학습 네트워크
문제 1: 입력값들이 정해졌을 때, N번 노드의 값은?
◦ 자신에게 들어오는 모든 노드의 값들이 정해지면 자신의 값을 확정 가능
◦ 순환노드가 없기 때문에 노드간의 순서를 정할 수 있음
◦ 위상정렬을 통해서 노드간의 위상(순서) 확정가능
1 4
3
2
4231
출제자: 류현종
5. B. 학습 네트워크
문제 2: 가능한 입력값의 종류는?
◦ 문제 제약조건에 의해서 모든 입력종류의 곱 <= 10,000
문제 1에서 위상정렬: O(n)
위상정렬 결과를 바탕으로 문제 2의 모든 조합을 시도
◦ 완전탐색문제! with O(cn), c <= 10,000
출제자: 류현종
7. C. 술자리 계획하기
하지만 시험
출제자: 신동걸
1일차 2일차 3일차 4일차 5일차
오늘 금주! 0 1 3 5 5
오늘 드링킹 어제 금주! 1 2 4 X 10
오늘 드링킹 어제도 드링킹 X 3 5 X X
8. D. 대역폭
어떤 간선이 통신에 포함되려면
즉 (2 𝑆(𝐴)−1) ∗ (2 𝑆(𝐵)−1)개의 경우의 수가 있습니다.
𝑥 𝑦
𝐴 𝐵𝑤
출제자: 김경근
9. D. 대역폭
통신에 포함된 간선 중에서 최솟값이 중요하므로 각 간선마다 자신이 최솟값이 되는
경우의 수를 따져줍니다. (𝑤1 < 𝑤2)
𝑥1
𝑦1
𝑤1
𝑥2
𝑦2
𝑤2
출제자: 김경근
10. D. 대역폭
통신에 포함된 간선 중에서 최솟값이 중요하므로 각 간선마다 자신이 최솟값이 되는
경우의 수를 따져줍니다. (𝑤1 < 𝑤2)
𝑥1
𝑦1
𝑤1
𝑥2
𝑦2
𝑤2
𝐴1 𝐵1
출제자: 김경근
11. D. 대역폭
통신에 포함된 간선 중에서 최솟값이 중요하므로 각 간선마다 자신이 최솟값이 되는
경우의 수를 따져줍니다. (𝑤1 < 𝑤2)
𝑥1
𝑦1
𝑥2
𝑦2
𝑤2
출제자: 김경근
12. D. 대역폭
통신에 포함된 간선 중에서 최솟값이 중요하므로 각 간선마다 자신이 최솟값이 되는
경우의 수를 따져줍니다. (𝑤1 < 𝑤2)
𝑥1
𝑦1
𝑥2
𝑦2
𝑤2
𝐴2 𝐵2
출제자: 김경근
13. D. 대역폭
하지만 완성된 트리에서 간선을 없앤 다음 각 컴포넌트의 크기를 세는 것은 매우 어려운
작업입니다.
때문에, 반대로 대역폭이 큰 간선부터 시작하여 하나씩 그래프에 간선을 union-find로
추가하면서 각 컴포넌트의 크기를 저장해 놓으면 간단하게 할 수 있습니다.
Disjoint-set 자료구조를 이용하면 𝑂 𝐸 𝑙𝑔𝐸 + 𝛼(𝐸) 의 시간에 문제를 해결 할 수 있습니다.
출제자: 김경근
14. E. 마이 리틀 트리
• 전위 순회와 중위 순회 결과로 트리 복원하기:
• 중위 순회 결과를 전위 순회 결과로 쪼개면 됩니다.
전위 순회 결과: 1 2 4 3 5 6 7
중위 순회 결과: 4 2 1 5 3 7 6
• 복원 후 BFS로 순회하여 level order로 출력합니다.
• 레벨 별로 리스트를 만들어 push하셔도 됩니다.
출제자: 정현환
15. F. 사탕 부수기 게임
Solution 1>
• 왕사탕을 만드는 패턴을 미리 배열에 저장해 놓은 후, 같은 종류의 사탕이 해당 패턴으로
나타나는가를 체크합니다.
Solution 2>
• 왕사탕은 3 x 3 안에 같은 종류 사탕으로 이뤄진 열이 적어도 한 개 이상, 행이 한 개 이상
존재하기만 하면 생깁니다.
따라서 3 x 3마다 같은 종류로만 이뤄진 행과 열의 수를 세면 됩니다.
출제자: 김선영
16. G. 링크 게임
전체 보드의 크기가 아주 작기 때문에 모든 경우를 탐색해도 빠른 시간 안에 답을 구할 수
있습니다.
알파벳을 정해서 시작점에서 끝점까지 도착하는 링크를 찾습니다. 링크가 연결되면, 링크
경로 위의 조약돌을 다른 링크에 속하지 않도록 체크합니다.
모든 알파벳이 서로 연결되어 있고, 모든 조약돌이 사용되었으면, 경우의 수를 누적합니다.
출제자: 김진호