shake! 본선 해설

16
문문 문문

Upload: sun-young-kim

Post on 18-Aug-2015

291 views

Category:

Education


9 download

TRANSCRIPT

Page 1: SHAKE! 본선 해설

문제 해설

Page 2: SHAKE! 본선 해설

A. 은하수벅스Solution 1 >

Binary search 로 받을 수 있는 텀블러의 갯수를 정합니다 .◦ 텀블러는 최소 0 개 , 최대 개 받을 수 있습니다 .

정한 텀블러 갯수 만큼 받을 수 있는지 확인합니다 .◦ 정한 텀블러 갯수가 M 이라 하면 ,◦ 여름 음료 스티커가 텀블러 하나당 다섯 장 있어야 하므로 , S ≥ 5M 인지 확인합니다 .◦ 여름 음료 또는 일반 음료 스티커가 텀블러 하나당 ( 여름 음료 5 장을 포함하여 ) 12 장 있어야 하므로

S - 5M + N ≥ (12 - 5)M 인지 확인합니다 .

답이 되는 텀블러 갯수 M 중 최댓값을 출력합니다 .

시간복잡도 :

출제자 : 정현환

Page 3: SHAKE! 본선 해설

A. 은하수벅스Solution 2 >

출제자 : 정현환

Page 4: SHAKE! 본선 해설

B. 학습 네트워크문제 1: 입력값들이 정해졌을 때 , N 번 노드의 값은 ?

◦ 자신에게 들어오는 모든 노드의 값들이 정해지면 자신의 값을 확정 가능◦ 순환노드가 없기 때문에 노드간의 순서를 정할 수 있음◦ 위상정렬을 통해서 노드간의 위상 ( 순서 ) 확정가능

1 4

3

2

4231

출제자 : 류현종

Page 5: SHAKE! 본선 해설

B. 학습 네트워크문제 2: 가능한 입력값의 종류는 ?

◦ 문제 제약조건에 의해서 모든 입력종류의 곱 <= 10,000

문제 1 에서 위상정렬 : O(n)

위상정렬 결과를 바탕으로 문제 2 의 모든 조합을 시도◦ 완전탐색문제 ! with O(cn), c <= 10,000

출제자 : 류현종

Page 6: SHAKE! 본선 해설

C. 술자리 계획하기동 ! 적 ! 계 ! 획 ! 법 !

D[i] = i 날 최대 즐거움

출제자 : 신동걸

1 일차 2 일차 3 일차 4 일차 5 일차

오늘 금주 ! 0 1 3 5 8

오늘 드링킹 어제 금주 ! 1 2 4 7 10

오늘 드링킹 어제도 드링킹 X 3 5 8 12

Page 7: SHAKE! 본선 해설

C. 술자리 계획하기하지만 시험

출제자 : 신동걸

1 일차 2 일차 3 일차 4 일차 5 일차

오늘 금주 ! 0 1 3 5 5

오늘 드링킹 어제 금주 ! 1 2 4 X 10

오늘 드링킹 어제도 드링킹 X 3 5 X X

Page 8: SHAKE! 본선 해설

D. 대역폭 어떤 간선이 통신에 포함되려면

즉 의 경우의 수가 있습니다 .

𝑥 𝑦𝐴 𝐵𝑤

출제자 : 김경근

Page 9: SHAKE! 본선 해설

D. 대역폭 통신에 포함된 간선 중에서 최솟값이 중요하므로 각 간선마다 자신이 최솟값이 되는 경우의 수를 따져줍니다 . ()

𝑥1𝑦 1

𝑤1

𝑥2𝑦 2

𝑤2

출제자 : 김경근

Page 10: SHAKE! 본선 해설

D. 대역폭 통신에 포함된 간선 중에서 최솟값이 중요하므로 각 간선마다 자신이 최솟값이 되는 경우의 수를 따져줍니다 . ()

𝑥1𝑦 1

𝑤1

𝑥2𝑦 2

𝑤2

𝐴1𝐵1

출제자 : 김경근

Page 11: SHAKE! 본선 해설

D. 대역폭 통신에 포함된 간선 중에서 최솟값이 중요하므로 각 간선마다 자신이 최솟값이 되는 경우의 수를 따져줍니다 . ()

𝑥1𝑦 1

𝑥2𝑦 2

𝑤2

출제자 : 김경근

Page 12: SHAKE! 본선 해설

D. 대역폭 통신에 포함된 간선 중에서 최솟값이 중요하므로 각 간선마다 자신이 최솟값이 되는 경우의 수를 따져줍니다 . ()

𝑥1𝑦 1

𝑥2𝑦 2

𝑤2

𝐴2 𝐵2

출제자 : 김경근

Page 13: SHAKE! 본선 해설

D. 대역폭 하지만 완성된 트리에서 간선을 없앤 다음 각 컴포넌트의 크기를 세는 것은 매우 어려운 작업입니다 .

때문에 , 반대로 대역폭이 큰 간선부터 시작하여 하나씩 그래프에 간선을 union-find 로 추가하면서 각 컴포넌트의 크기를 저장해 놓으면 간단하게 할 수 있습니다 .

Disjoint-set 자료구조를 이용하면 시간에 문제를 해결 할 수 있습니다 .

출제자 : 김경근

Page 14: SHAKE! 본선 해설

E. 마이 리틀 트리• 전위 순회와 중위 순회 결과로 트리 복원하기 :

• 중위 순회 결과를 전위 순회 결과로 쪼개면 됩니다 .

전위 순회 결과 : 1 2 4 3 5 6 7

중위 순회 결과 : 4 2 1 5 3 7 6

• 복원 후 BFS 로 순회하여 level order 로 출력합니다 .

• 레벨 별로 리스트를 만들어 push 하셔도 됩니다 .

출제자 : 정현환

Page 15: SHAKE! 본선 해설

F. 사탕 부수기 게임Solution 1>

• 왕사탕을 만드는 패턴을 미리 배열에 저장해 놓은 후 , 같은 종류의 사탕이 해당 패턴으로 나타나는가를 체크합니다 .

Solution 2>

• 왕사탕은 3 x 3 안에 같은 종류 사탕으로 이뤄진 열이 적어도 한 개 이상 , 행이 한 개 이상 존재하기만 하면 생깁니다 .따라서 3 x 3 마다 같은 종류로만 이뤄진 행과 열의 수를 세면 됩니다 .

출제자 : 김선영

Page 16: SHAKE! 본선 해설

G. 링크 게임 전체 보드의 크기가 아주 작기 때문에 모든 경우를 탐색해도 빠른 시간 안에 답을 구할 수 있습니다 .

알파벳을 정해서 시작점에서 끝점까지 도착하는 링크를 찾습니다 . 링크가 연결되면 , 링크 경로 위의 조약돌을 다른 링크에 속하지 않도록 체크합니다 .

모든 알파벳이 서로 연결되어 있고 , 모든 조약돌이 사용되었으면 , 경우의 수를 누적합니다 .

출제자 : 김진호