4. E. 너의 이름은 몇 점이니?
• 작성자: 정승균(wjdtmdrbs88)
• 푼 사람: 17팀 중 17팀
• 정답률: 84.0%
• First Solve: <어벤져스>팀 (3분)
5. E. 너의 이름은 몇 점이니?
• 반복문을 잘 사용하여, N개의 문자를 입력 받아
그 문자의 값을 더해주면 된다.
6. C. 복면산?!
• 작성자: 윤준하(joonas)
• 푼 사람: 17팀 중 0팀
• 정답률: 0.00%
• First Solve:
7. C. 복면산?!
• Brute Force(브루트포스) 문제
• A~Z 각 알파벳을 0~9 숫자들에 하나씩 대응시켜봅니다.
• 26개 중 10개를 선택하는 조합 문제입니다.
• 𝐶𝐶 𝑛𝑛, 𝑟𝑟 = 𝐶𝐶 26, 10 = 5,311,735 가지
• DFS 등의 탐색으로 해결할 수 있습니다.
8. C. 복면산?!
D E M N O R S Y
0 1 2 3 4 5 6 7
0 1 2 3 4 5 6 8
0 1 2 3 4 5 6 9
0 1 2 3 4 5 7 6
0 1 2 3 4 5 7 8
0 1 2 3 4 5 7 9
0 1 2 3 4 6 5 7
0 1 2 3 4 6 5 8
…
SEND + MORE = MONEY → 등장하는 문자만 사용: DEMNORSY
9. C. 복면산?!
D E M N O R S Y
…
9 8 7 6 5 3 4 1
9 8 7 6 5 3 4 2
9 8 7 6 5 4 1 2
9 8 7 6 5 4 1 3
9 8 7 6 5 4 2 1
9 8 7 6 5 4 2 3
9 8 7 6 5 4 3 1
9 8 7 6 5 4 3 2
SEND + MORE = MONEY → 등장하는 문자만 사용: DEMNORSY
10. C. 복면산?!
D E M N O R S Y
9 8 7 6 5 4 1 2
각 조합에 대해 하나씩 확인
SEND + MORE = MONEY
→ 1869 + 7548 ≠ 75682
정답을 발견하면 YES를 출력하고 프로그램 종료
11. G. 천재 수학자 성필
• 작성자: 조나단(zxcv859500)
• 푼 사람: 17팀 중 4팀
• 정답률: 9.5%
• First Solve: <433_villian>팀 (40분)
12. G. 천재 수학자 성필
• 스택을 사용하는 후위표기식 문제입니다.
• 중위표기식과 달리 우선순위를 고려할 필요가 없습니다.
1. 피연산자(숫자)를 스택에 쌓은 후,
2. 연산자를 만나면 스택에 쌓인 2개의 숫자를 계산하여 다시 스택에 쌓습니다.
3. 1번과 2번을 반복합니다.
13. D. 침략자 진아
• 작성자: 정승균(wjdtmdrbs88)
• 푼 사람: 17팀 중 0팀
• 정답률: 0.00%
• First Solve:
14. D. 침략자 진아
• 모든 두 곳을 선택한 후, 각 후보들에 대해 완전탐색으로 최소 시간을 구하는 문제
• 지도의 크기가 작기 때문에 가능한 모든 쌍에서 너비우선탐색(BFS)이 가능하다.
• 집이 아닌 모든 빈 공간의 위치를 구조체 또는 2개의 배열로 y, x를 담은 후
그 좌표들로 2중 for문을 통해 모든 쌍을 선택할 수 있다.
15. B. 풍선 공장
• 작성자: 윤준하(joonas)
• 푼 사람: 17팀 중 2팀
• 정답률: 2.00%
• First Solve: <Human_Soldier_ROTC>팀 (124분)
16. B. 풍선 공장
• 최소 시간이 X일 때, 풍선 M개를 만들 수 있는 지?
• 최소 시간 X에 만들어진 풍선 개수가 부족하면, 시간이 더 필요합니다.
• 반대로 풍선이 너무 많으면, 시간을 줄입니다.
• M개 이상을 만드는 최소 시간 X를 이분 탐색으로 빠르게 찾을 수 있습니다.
• 비슷한 문제: 2017 CNUPC - 파닭파닭
17. A. 전국 시대
• 작성자: 이강민(yukariko)
• 푼 사람: 17팀 중 3팀
• 정답률: 9.1%
• First Solve: <EMP>팀 (149분)
18. A. 전국 시대
• 여러 나라들이 동맹하고 전쟁하였을 때
남는 국가와 그 국가의 병사의 수를 구하는 문제
• 동맹을 맺은 국가, 전쟁 후의 남은 국가를
하나의 국가로 묶어서 취급하면 쉬워짐
• 어떤 국가 x를 가지고 동맹으로 묶인 국가를
빠르게 구할 수 있어야 함
1
2
3
5
6
7
4
19. A. 전국 시대
• 여러 나라들이 동맹하고 전쟁하였을 때
남는 국가와 그 국가의 병사의 수를 구하는 문제
• 동맹을 맺은 국가, 전쟁 후의 남은 국가를
하나의 국가로 묶어서 취급하면 쉬워짐
• 어떤 국가 x를 가지고 동맹으로 묶인 국가를
빠르게 구할 수 있어야 함
1
2
3
4
5
6
7
20. A. 전국 시대
• 각 국가를 정점으로, 동맹 혹은 전쟁 관계를
간선으로 나타내면 그래프가 형성됨
• Union-find 자료구조를 통해 정점을
하나의 관계로 빠르게 묶을 수 있음
• 마지막에 남은 병사의 수를 정렬
• 시간복잡도 : 𝑂𝑂(𝑁𝑁𝑁𝑁 𝑁𝑁 𝑁𝑁)
1
2
3
4
5
6
7
21. I. 배수 공사
• 작성자: 윤준하(joonas)
• 푼 사람: 17팀 중 0팀
• 정답률: 0.00%
• First Solve:
22. I. 배수 공사
• 동전 DP 문제
• n가지 종류의 동전과,
그 개수가 주어졌을 때
금액 X를 만드는 방법의 수
23. H. 퀘스트 중인 모험가
• 작성자: 이강민(yukariko)
• 푼 사람: 17팀 중 0팀
• 정답률: 0.00%
• First Solve:
24. H. 퀘스트 중인 모험가
• 달성한 퀘스트 목록 중,
퀘스트 번호가 특정 범위에 달성하지 못한 퀘스트들의 수를 구하는 문제
• 매번 모든 퀘스트를 계산한다면 시간초과가 발생
2 6 98 5 1
25. H. 퀘스트 중인 모험가
• 퀘스트 번호들이 정렬되어 있다면?
• 양 끝 범위를 이진탐색하여 빠르게 구간을 구할 수 있음
2 5 91 6 8
26. H. 퀘스트 중인 모험가
• 퀘스트 번호들이 정렬되어 있다면?
• 양 끝 범위를 이진탐색하여 빠르게 구간을 구할 수 있음
• 그러나 중간 중간에 퀘스트가 추가되므로 매번 정렬하게 되면 시간초과
2 5 91 6 8
4 3
27. H. 퀘스트 중인 모험가
• 만약 미래에 달성하게 되는 퀘스트 번호들을 미리 알고 있다면?
• 미리 배열에 넣어놓고 정렬이 가능
4 5 93 6 821
28. H. 퀘스트 중인 모험가
• 하지만 아직 달성하기 전에 퀘스트 개수를 구하는 명령이 들어온다면
그 퀘스트는 제외해야 함
• 어떻게 처리할 수 있을까?
4 5 93 6 821
29. H. 퀘스트 중인 모험가
• 현재까지 달성한 퀘스트의 상태를 1,
아직 달성하지 못한 퀘스트의 상태를 0 이라고 하자
• 1과 0으로 이루어진 새로운 배열을 얻을 수 있음
4 5 93 6 821
0 1 10 1 111
30. H. 퀘스트 중인 모험가
• 현재까지 달성한 퀘스트의 상태를 1,
아직 달성하지 못한 퀘스트의 상태를 0 이라고 하자
• 1과 0으로 이루어진 새로운 배열을 얻을 수 있음
• 이제 특정 범위안에 있는 수들의 합을 구해준다면 답을 구할 수 있음
4 5 93 6 821
0 1 10 1 111
3
31. H. 퀘스트 중인 모험가
• 이제 특정 범위안에 있는 수들의 합을 구해준다면 답을 구할 수 있음
• 추후에 퀘스트를 달성한 경우는 0을 1로 바꿔주면 됨
• 어떻게하면 수들의 합을 빠르게 구할 수 있을까?
• 구간 트리 (세그먼트 트리)
4 5 93 6 821
0 1 11 1 111
4
32. • 1과 0으로 이루어진 수를 리프 노드로 하는 이진 트리를 구성
• 부모 노드는 자식 노드들의 합을 저장
H. 퀘스트 중인 모험가
1 1 1111 10
2 1 2 2
2 4
6
33. • 1과 0으로 이루어진 수를 리프 노드로 하는 이진 트리를 구성
• 부모 노드는 자식 노드들의 합을 저장
• 범위 안의 수들의 합은 서브 트리를 타고 내려 가는 것으로 구할 수 있음
• 특정 범위의 합을 구하는데 걸리는 시간복잡도
• 𝑂𝑂 𝑁𝑁𝑁𝑁 𝑁𝑁 𝑁𝑁 → 𝑂𝑂(𝑙𝑙𝑙𝑙𝑙𝑙)
H. 퀘스트 중인 모험가
1 1 1111 10
2 1 2 2
2 4
6
34. • 퀘스트를 달성했을 때 1로 바꿔주는 작업도 빠르게 가능
• 시간복잡도
• 𝑂𝑂 𝑙𝑙𝑙𝑙𝑙𝑙
• 따라서 M개의 요청을 모두 처리하는 시간복잡도
• 𝑂𝑂 𝑀𝑀𝑙𝑙𝑙𝑙𝑙𝑙
H. 퀘스트 중인 모험가
1 1 1111 11
2 2 2 2
4 4
8