Beginners Guide to TikTok for Search - Rachel Pearson - We are Tilt __ Bright...
2019 cnupc solution
1.
2. A. 아맞다우산
• 출제자: 윤준하(joonas)
• 푼 사람: 32팀 중 0팀
• 정답률: 0.00%
• First Solve
• (없음)
2019 CNUPC
3. A. 아맞다우산
• BFS with Bitmasks 문제
• 챙겨야 하는 물건 X들에 적당한 번호들(0, 1, 2)을 붙이고
• 현재 챙긴 물건의 상태를 비트로 나타내어 현재 위치와 함께 BFS
• [y][x][bit] := y, x의 위치까지 어떤 물건들(bit)을 챙겨서 오는 거리
• bit에 1이 물건들의 개수만큼 있다면 모든 물건을 챙겼다는 의미
• y, x, bit가 모든 조건을 만족하는 순간, 도착 가능한 최소 거리를 출력
2019 CNUPC
*BFS(Breadth-First Search, 너비 우선 탐색)
4. B. 서버실
• 출제자: 윤준하(joonas)
• 푼 사람: 32팀 중 14팀
• 정답률: 8.0%
• First Solve
• 60분, 어색한녀석들팀
2019 CNUPC
5. B. 서버실
• 의도한 풀이는 이분 탐색이었으나, 컴파일러 최적화 옵션때문에
반복문을 잘 설정하면 시뮬레이션으로 정답을 받을 수 있었습니다.
• 이분 탐색(Binary Search) 문제
• 차가운 공기가 높게 찰수록 가동되는 컴퓨터의 수는 증가한다.
• 차가운 공기의 높이 ℎ에 대해 문제 조건에 만족하도록 이분 탐색하면 정답
→ 𝑂 𝑁2 ∙ log2 ℎ 𝑚𝑎𝑥 ≅ 𝑂 𝑁2 ∙ 15
2019 CNUPC
6. C. 씨씨
• 출제자: 윤준하(joonas)
• 푼 사람: 32팀 중 5팀
• 정답률: 10.2%
• First Solve
• 20분, ㄴ(˚0 ˚)ㄱ팀
2019 CNUPC
7. C. 씨씨
• 그래프(모든 쌍의 거리) 문제
• 사람을 노드로, 대화를 간선으로 표현한 그래프에서
모든 정점 간의 거리를 묻는 문제
• 𝑉 = 200 라서 𝑂(𝑉3)인 플로이드-워셜 알고리즘으로 접근 가능
• 이후 𝑄 번의 질문에 대해 𝑂(1)만큼 걸리므로 로 해결 가능
• 단일-쌍 최단 경로 문제로 제출한 경우에는 시간 초과
2019 CNUPC
8. C. 씨씨
• 그래프(모든 쌍의 거리) 문제
• 각 그래프들에 대해 BFS로 전처리 후,
• 같은 그래프 내의 원소에 대하여,
• 상대적인 거리의 차이로 구하는 것도 인정함
• 가족 관계라는 것을 생각하면, 결국 트리의 형태
2019 CNUPC
*LCA(Least Common Ancestor, 최소 공통 조상)
9. D. 택시 거리
• 출제자: 조나단(zxcv859500)
• 푼 사람: 32팀 중 30팀
• 정답률: 40.0%
• First Solve
• 6분, 이김일최팀
2019 CNUPC
10. E. 물리 공부
• 출제자: 이영훈(940723)
• 푼 사람: 32팀 중 31팀
• 정답률: 43.2%
• First Solve
• 10분, 1st팀
2019 CNUPC
11. E. 물리 공부
• 속도 𝑥 에 가속도 𝑧 를 더합니다. 그리고 가속도는 𝑧 만큼 커집니다.
• 이를 반복하다 속도가 𝑥 ≥ 𝑦가 되는 시점의 𝑡를 출력합니다.
• 문제의 의도는 중첩 연산과 반복문을 사용한 풀이입니다.
• 𝑥 + 𝑧 ∙ σ 𝑘=1
𝑡
𝑘 ≥ 𝑦 가 되는 𝑡 를 찾는 문제와 같으므로,
• 수식 𝑡2
− 𝑡 − 2
𝑦−𝑥
𝑧
≤ 0 이 되는 가장 큰 𝑡를 출력하여도 정답입니다.
2019 CNUPC
12. F. 태보태보 총난타
• 출제자: 윤준하(joonas)
• 푼 사람: 32팀 중 31팀
• 정답률: 72.1%
• First Solve
• 3분, 성호네집성필이가누구연?팀
2019 CNUPC
13. F. 태보태보 총난타
• 문자열 처리 문제
• 얼굴인 (^0^)를 기준으로 왼편과 오른편을 구분한다.
• 얼굴의 일부가 등장하기 전까지 @의 개수와
• 등장한 이후의 @의 개수를 순서대로 출력하면 정답.
2019 CNUPC
14. G. 은하철도
• 출제자: 조나단(zxcv859500)
• 푼 사람: 32팀 중 5팀
• 정답률: 20.8%
• First Solve
• 50분, 1st팀
2019 CNUPC
15. G. 은하철도
• Disjoint-Set(Union-Find) 자료구조 문제
• 𝑀개의 철도가 연결될 때마다 탐색(DFS, BFS)를 한다면
• 시간복잡도: 𝑂(𝑁𝑀)
• 시간 초과입니다.
• 연결된 은하들을 묶어서 하나로 생각하면 쉬워짐
2019 CNUPC
16. G. 은하철도
• 은하는 정점으로, 철도를 간선으로 나타내면 그래프가 형성됨
• Union-Find 연산을 통해서,
간선으로 연결된 정점들을 하나로 빠르게 묶을 수 있음
• 간선이 추가될 때, Union 연산 이후 어느 한 쪽의 정점 묶음을 찾고
그 크기를 출력하는 데 걸리는 시간: 𝑂(𝑙𝑜𝑔𝑁)
• 시간복잡도: 𝑂(𝑀𝑙𝑜𝑔𝑁)
2019 CNUPC
17. G. 은하철도
• 유사한 문제:
• 2018년도 A번 – 전국 시대
2019 CNUPC
(데이터 일부)
18. H. 힘 겨루기
• 출제자: 윤준하(joonas)
• 푼 사람: 32팀 중 16팀
• 정답률: 20.3%
• First Solve
• 45분, 성호네집성필이가누구연?팀
2019 CNUPC
19. H. 힘 겨루기
• 가능한 모든 기준선들에 대해
• 왼쪽 구간의 최댓값과 오른쪽 구간의 최대값을 비교하는 문제
• 매번 직접 구한다면 𝑂(𝑁2
)만큼 걸려서 시간초과이다.
• 특히, Python의 max 함수는 𝑂(𝑁)만큼 걸리므로 주의해야한다.
• 왼쪽에서 한번, 오른쪽에서 한번 최댓값을 갱신하면 𝑂(𝑁)으로 해결
2019 CNUPC
21. I. 삼삼한 수
• 출제자: 윤준하(joonas)
• 푼 사람: 32팀 중 15팀
• 정답률: 10.8%
• First Solve
• 31분, 오이오이팀
2019 CNUPC
22. I. 삼삼한 수
• 𝑁 ≤ 2147483647 = 231
− 1
• 30 + 31 + ⋯ + 319 < 231
• 정답의 상한은 319까지만 사용해도 가능
• 𝑁 < 231 에서, 삼삼한 수는 약 100만개
• BFS로 모든 가능한 삼삼한 수를 만들고, 입력된 𝑁 을 찾아도 정답
• 2진수 비트를 이용하여 모든 경우를 만드는 것도 가능
• 3의 멱수가 반드시 하나 이상 있어야 하므로, N=0인 입력이 NO임에 주의
2019 CNUPC
23. J. 삼삼한 수 2
• 출제자: 윤준하(joonas)
• 푼 사람: 32팀 중 10팀
• 정답률: 27.8%
• First Solve
• 40분, ㄴ(˚0 ˚)ㄱ팀
2019 CNUPC
24. J. 삼삼한 수 2
• 𝑁 ≤ 9223372036854775807 = 263
− 1
• 30 + 31 + ⋯ + 339 < 263
• 정답은 30 부터 339 까지 모두 한번씩 사용한 것이 최대
• 이 범위 내의 삼삼한 수는 5천억개가 넘는다.
• 서로 다른 𝑘를 사용하여 3 𝑘들을 한번씩만 더하여 이루어진 수라는 말은,
• 반대로 3 𝑘꼴을 전부 뺐을 때, 그 값이 0 이라면 삼삼한 수라는 의미이다.
2019 CNUPC
25. K. 키보드 이벤트
• 출제자: 윤준하(joonas)
• 푼 사람: 32팀 중 22팀
• 정답률: 57.9%
• First Solve
• 24분, 1st팀
2019 CNUPC
26. K. 키보드 이벤트
• 정렬 문제
• 다음의 조건을 만족하도록 정렬한 후, 순서대로 출력하면 정답
1. 키를 누른 시간이 적은 순
2. 시간이 같은 경우, 키보드의 번호가 작은 순
• C는 qsort, C++는 std::sort,
• Java는 Comparator, Python 계열은 sort 등이 있다.
2019 CNUPC
27. L. N으로 만들기
• 출제자: 윤준하(joonas)
• 푼 사람: 32팀 중 3팀
• 정답률: 25.0%
• First Solve
• 178분, 투데이팀
2019 CNUPC
28. L. N으로 만들기
• 완전 탐색 문제
• 𝑁 ≤ 107
이면 최대 8자리의 수까지 만들 수 있으며,
항상 왼쪽 또는 오른쪽에 숫자를 붙이므로 28
가지 경우 밖에 없다.
• 1의 왼쪽에 1을 붙인 11과, 오른쪽에 1을 붙인 11은 같은 경우이다.
• 현재 상태에서 숫자를 왼쪽에 붙이거나 오른쪽에 붙인 것이
같은 모양이라면 한번만 탐색하도록 해야 한다.
• 100을 만드는 경우, 0→00→100 도 가능한 것에 주의해야 한다. (정답: 3)
2019 CNUPC