일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | ||||||
2 | 3 | 4 | 5 | 6 | 7 | 8 |
9 | 10 | 11 | 12 | 13 | 14 | 15 |
16 | 17 | 18 | 19 | 20 | 21 | 22 |
23 | 24 | 25 | 26 | 27 | 28 |
- 코드포스
- 쿠링
- MyVoca
- Hilt
- Gradle
- 백준
- Kotlin
- AWS
- Codeforces
- 코루틴
- ProGuard
- architecture
- 암호학
- 프로그래머스
- Compose
- activity
- MiTweet
- Rxjava
- GitHub
- boj
- Coroutines
- Python
- pandas
- Coroutine
- android
- livedata
- androidStudio
- TEST
- relay
- textfield
- Today
- Total
이동식 저장소
프로그래머스 월간 코드 챌린지 2020-10 본문
프로그래머스 코드 챌린지는 알고리즘 문제를 푸는 대회이다. 각 대회마다 4개의 문제가 출제되며, 현재 시즌 1(2020-09~2020-11)이 진행 중이다.
사실 이런 게 있는 줄도 오늘 알았다..ㅋㅋ pqk님 아니었으면 야구 보느라 대회도 놓칠 뻔했다. 감사합니다.
문제 자체는 적지 않고, 대략적인 풀이만 서술해 보려 한다. 문제는 일정 기간 후에 공개된다고 한다.
1번
흔한 진법 변환 문제이다. 스택만 쓸 줄 알면 풀 수 있는 문제.
예상 난이도: 실버5
2번
쿼드트리 문제는 백준에서도 유명한 문제이다. 재귀를 쓸 줄 안다면 분할 정복이라는 생각 없이도 간단하게 풀 수 있다.
예상 난이도: 실버2~실버1
3번
3번에서 갑자기 확 어려워졌다. 전체적인 컨셉은 트리에서의 거리를 구하는 문제인데, 웬 중위수를 섞어 놓아서 조금 까다로웠다.
일단 트리에서 임의의 두 정점 사이의 거리를 구할 수 있어야 한다. LCA를 이용하면 로그 시간에 구할 수 있다. 여기까지만 구현하는 데도 코드 양이 꽤 많아졌다.
그 다음은 사실 $O(N^{3})$으로 정답을 구할 수 있지만, $n$이 최대 $350,000$이라서 택도 없다. $O(NlogN)$에 풀어야 하는데, 나는 우선 트리의 지름을 이루는 두 정점 $a,~b$를 구한 다음 모든 $1 \ge i \ge n$에 대해 $f(a,~b,~i)~~(i \ne a, b)$의 최댓값을 구하였다.
놀랍게도 정답을 받았다. 오.. 내가 이걸 풀다니?
예상 난이도: 골드1~플레5
4번
나이브하게 $O(N^{4})$에 푸는 코드는 당연히 시간 초과. 놀랍게도 27점이나 받았다.
뭔가 dp로 될 것 같기도 한데.. 내가 모르는 문자열 알고리즘을 써야 하나? 한시간동안 비벼서 최적화한 결과 41점을 긁는 데 성공했다. 최적화 해봤자 $O(N^{4})$지만.. ㅋㅋㅋ
예상 난이도: ?
솔직히 3번도 어렵다고 생각했다. 그런데 언뜻 생각난 풀이가 맞아서.. 내가 풀고도 어떻게 푼 건지 신기하다.
3번 풀고 난 직후 한때 18등까지 갔었지만 결국 46등으로 마무리. 20분정도 지각하긴 했지만 이 정도면 만족한다. 취업 준비할 땐 4번까지 맞춰야 하는데.. 열심히 해야지 뭐.
'Primary' 카테고리의 다른 글
IntelliJ 계열 IDE에서 파일 탐색기가 작동하지 않는 오류 (2) | 2021.01.30 |
---|---|
프로그래머스 월간 코드 챌린지 시즌1 11월 후기 (0) | 2020.11.07 |
Hyperskill - 단계식 프로그래밍 학습 사이트 (0) | 2020.07.29 |
std::set은 생각보다 더 느리다 (0) | 2020.07.25 |
상수에 관한 오해 (0) | 2020.07.12 |