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

More Related Content

PDF
[연세대 모르고리즘] 프로그래밍 경진대회 문제 풀이
PDF
[고려대 ALPS&ALKOR] 프로그래밍 경진대회 문제
PDF
[한양대 aloha] 프로그래밍 경진대회 문제_advanced part
PDF
한양대학교 ALOHA - 봄내전대회_C언어반
PPTX
Chapter 1 0 이야기
PDF
한양대학교 ALOHA - 봄내전대회_알고리즘반
PDF
[한양대 aloha] 프로그래밍 경진대회 문제_Beginner part
PDF
2015 한양대학교 프로그래밍 경시대회 - beginner division
[연세대 모르고리즘] 프로그래밍 경진대회 문제 풀이
[고려대 ALPS&ALKOR] 프로그래밍 경진대회 문제
[한양대 aloha] 프로그래밍 경진대회 문제_advanced part
한양대학교 ALOHA - 봄내전대회_C언어반
Chapter 1 0 이야기
한양대학교 ALOHA - 봄내전대회_알고리즘반
[한양대 aloha] 프로그래밍 경진대회 문제_Beginner part
2015 한양대학교 프로그래밍 경시대회 - beginner division

More from Joona Yoon (10)

PDF
원주율은 정말 모든 수를 담고 있을까. (Does pi have all positive numbers in it?)
PDF
2019 cnupc solution
PDF
2017 cupc solution
PDF
Speech translator
PDF
Jcloud.ssh.linux.cli
PDF
Jcloud.creating.instance.student.2019.v2
PDF
Jcloud.ssh.xshell2
PDF
Jcloud.ssh.putty
PDF
3d mine sweeper with unity 3d
PPTX
Kinesis를 이용한 데이터 수집
원주율은 정말 모든 수를 담고 있을까. (Does pi have all positive numbers in it?)
2019 cnupc solution
2017 cupc solution
Speech translator
Jcloud.ssh.linux.cli
Jcloud.creating.instance.student.2019.v2
Jcloud.ssh.xshell2
Jcloud.ssh.putty
3d mine sweeper with unity 3d
Kinesis를 이용한 데이터 수집
Ad

2018 cnupc solution

  • 2. F. 야바위 대장 • 작성자: 이영훈(940723) • 푼 사람: 17팀 중 17팀 • 정답률: 73.3% • First Solve: <Human_Soldier_ROTC>팀 (7분)
  • 3. F. 야바위 대장 • 배열 swap 문제 • C언어 수업에 나옵니다.
  • 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