백준 티어 Platinum V 달성

드디어 백준 티어 플레5 달성을 했습니다.
개인적으로 실제 실력은 플레5가 아닌거 같지만...하여간 달성을 했습니다.
원래 ㅁㅁㅁ티어 달성 이런 글은 별로 안 쓰려고 했는데 생각해보니 앞으로 남은 티어가 딸랑 15개 (플레에 남은거 4개, 다이아 5개, 루비 5개, ...마스터?) 밖에 없으니 써도 괜찮겠다는 생각이 들었습니다.
아직 부족하다고 생각되는 점 / 느낀 점을 하나 둘 적어보면서 앞으로의 방향을 잡아보고자 합니다.

1. 이게 수학과인지 컴공과인지

??? 수학문제들이 가득합니다.
물론 코딩할 때 수학이 중요하다고는 하지만 너무나도 수학문제만 푼 모습입니다. 다이나믹 프로그래밍이라 되어있는 부분도 사실상 수학문제들로 채워졌습니다. (DP도 아니고 일반항으로 풀어버린 그런 문제들)
여태까지 푼 문제 중 티어 Top 10을 보자면 다음과 같습니다.

1. 01196 잭 바우어 (다이아4) / 수치해석 문제
2. 13729 1013 피보나치 (다이아4) / 정수론 문제
3. 04149 큰 수 소인수분해 (다이아5) / 정수론 문제
4. 10854 Divisons (다이아5) / 정수론 문제
5. 13705 Ax+Bsin(x)=C (다이아5) / 수치해석 문제
6. 13926 gcd(n, k) = 1 (다이아5) / 정수론 문제
7. 04357 이산로그 (플레1) / 정수론 문제
8. 05615 아파트 임대 (플레1) / 정수론 문제
9. 07501 Key (플레1) / 정수론 문제
10. 12728 n제곱 계산 (플레1) / 정수론 문제

자료구조로 플레 문제는 커녕 골드 문제도 못푸는 반면에, 수학 문제는 잔뜩 푼 모습입니다.
그래도 이제 수학 문제여도 약간 경우의 수 문제가 들어간 그런 조합론 문제든...진짜 알고리즘 문제든 그런 문제들을 풀어봐야겠다는 생각이 듭니다.

2. 티어가 플레5인데 Class 2?

위에 써놓은 04149 큰 수 소인수분해 문제는 Class 8에 있는 문제인데, 실제로는 Class 2까지만 겨우 풀었습니다.
플레에 계신 다른 분들 보니 Class 4나 5, 높으면 6이나 7까지도 얻은 분들을 볼 수 있는데, 알고리즘 편식의 증거라고 볼 수 있겠습니다.
플레 4를 갈 때는 그래도 Class 2++을 가지고 있거나, Class 3 정도까지는 가지고 있어야겠습니다.

3. 자료구조 부족

자료구조가 심각하게 빈약함을 느낍니다.
그런 쪽 문제는 그래프 DFS BFS니 하는것도 아직 제대로 못하고 있고, 알고 있는 자료구조라고는 스택밖에 없는 꼴입니다.
두 달 쯤 전에 종만북(으로 불리는 "알고리즘 문제해결전략 1, 2")을 구매했는데, 이제는 진짜 읽을 때가 온 듯 합니다.

4. 파이썬이 너무 편하다

파이썬의 내장 모듈 / 내장 함수들이 너무나도 편합니다.
정수 오버플로우? 파이썬에서는 애초에 없습니다. (float에서는 존재하는데 PS에서 걱정할 수준은 아닙니다.)
실수 오차? 파이썬의 Decimal 모듈을 사용해줍니다.
pow 함수는 그냥 거듭제곱 함수인 줄 알았는데 모듈러 곱셈 역원까지 구해주는걸 보고 깜짝 놀랐습니다.
그러다보니 수학문제를 더 많이 풀게 되고, 너무나도 편하게 정착한 느낌을 받습니다.
자료구조 관련 문제는 C++의 Vector 같은 것들을 이용한다던지...해서 조금 색다른 느낌을 받아야 할 듯 합니다.
여태까지 풀었던 문제 중 티어 Top100 리스트를 써놓고, 플레4가 되었을 때는 여기서 얼마나 더 달라졌을지 확인해보려고 합니다.
플레5 시점의 푼 문제 티어 Top100

1. Diamond IV 1196 잭 바우어
2. Diamond IV 13729 1013 피보나치
3. Diamond V 4149 큰 수 소인수분해
4. Diamond V 10854 Divisions
5. Diamond V 13705 Ax+Bsin(x)=C
6. Diamond V 13926 gcd(n, k) = 1
7. Platinum I 4357 이산 로그
8. Platinum I 5615 아파트 임대
9. Platinum I 7501 Key
10. Platinum I 12728 n제곱 계산
11. Platinum I 12925 Numbers
12. Platinum I 18613 Decimal Expansion
13. Platinum I 26036 제곱 ㄱㄱ
14. Platinum II 1492 합
15. Platinum II 2554 마지막 팩토리얼 수2
16. Platinum II 9206 나무 말고 꽃
17. Platinum II 10438 페리 수열의 합
18. Platinum II 25974 거듭제곱의 합 1
19. Platinum IV 9735 삼차 방정식 풀기
20. Platinum IV 26601 가장 작은 수
21. Platinum V 1160 Random Number Generator
22. Platinum V 3783 세제곱근
23. Platinum V 11402 이항 계수 4
24. Platinum V 11440 피보나치 수의 제곱의 합
25. Gold I 2086 피보나치 수의 합
26. Gold I 4355 서로소
27. Gold I 9343 랜덤 걷기
28. Gold I 11238 Fibo
29. Gold I 11401 이항 계수 3
30. Gold I 11525 Farey Sequence Length
31. Gold I 11689 GCD(n, k) = 1
32. Gold I 11778 피보나치 수와 최대공약수
33. Gold I 13010 h(n)
34. Gold I 13319 가짜 소수
35. Gold I 13977 이항 계수와 쿼리
36. Gold I 15791 세진이의 미팅
37. Gold I 16134 조합 (Combination)
38. Gold I 23832 서로소 그래프
39. Gold I 26653 XOR Hashing
40. Gold II 2749 피보나치 수 3
41. Gold II 7677 Fibonacci
42. Gold II 10978 기숙사 재배정
43. Gold II 11442 홀수번째 피보나치 수의 합
44. Gold II 11443 짝수번째 피보나치 수의 합
45. Gold II 11444 피보나치 수 6
46. Gold II 11693 n^m의 약수의 합
47. Gold II 13075 Fibonacci Sequence
48. Gold II 13076 Distinct rational numbers
49. Gold II 14565 역원(Inverse) 구하기
50. Gold II 21094 Discrete Logarithm is a Joke
51. Gold II 21739 펭귄 네비게이터
52. Gold II 22445 Fast Division
53. Gold II 25823 조합의 합의 합
54. Gold III 1644 소수의 연속합
55. Gold III 7558 제곱잉여
56. Gold III 7881 YAPTCHA
57. Gold III 7894 큰 수
58. Gold III 13294 역팩토리얼
59. Gold III 14786 Ax+Bsin(x)=C ②
60. Gold III 15711 환상의 짝꿍
61. Gold III 18132 내 이진트리를 돌려줘!!!
62. Gold IV 2133 타일 채우기
63. Gold IV 2226 이진수
64. Gold IV 4233 가짜소수
65. Gold IV 5641 겉보기에 쌍둥이 소수
66. Gold IV 9176 메르센 합성수
67. Gold IV 12727 Numbers (Small)
68. Gold IV 13172 Σ
69. Gold IV 13250 주사위 게임
70. Gold IV 22236 가희와 비행기
71. Gold V 1456 거의 소수
72. Gold V 1990 소수인팰린드롬
73. Gold V 2023 신기한 소수
74. Gold V 4811 알약
75. Gold V 10827 a^b
76. Gold V 13140 Hello World!
77. Gold V 18291 비요뜨의 징검다리 건너기
78. Gold V 20500 Ezreal 여눈부터 가네 ㅈㅈ
79. Gold V 24009 Huge Numbers
80. Gold V 26312 Heximal
81. Silver I 1629 곱셈
82. Silver I 1850 최대공약수
83. Silver I 2824 최대공약수
84. Silver I 6588 골드바흐의 추측
85. Silver I 10425 피보나치 인버스
86. Silver I 11687 팩토리얼 0의 개수
87. Silver I 11819 The Shortest does not Mean the Simplest
88. Silver I 13239 Combinations
89. Silver I 14651 걷다보니 신천역 삼 (Large)
90. Silver I 14731 謎紛芥索紀 (Large)
91. Silver I 24392 영재의 징검다리
92. Silver II 2004 조합 0의 개수
93. Silver II 2553 마지막 팩토리얼 수
94. Silver II 4948 베르트랑 공준
95. Silver II 9020 골드바흐의 추측
96. Silver II 11051 이항 계수 2
97. Silver II 14650 걷다보니 신천역 삼 (Small)
98. Silver II 15965 K번째 소수
99. Silver II 15988 1, 2, 3 더하기 3
100. Silver III 1003 피보나치 함수