<

PS/백준

[백준] 새싹10단계 뱃지 획득! 1024일간의 여정

leedongbin 2024. 5. 8. 17:39

드디어 1024일에 걸친 마라톤이 끝이 났다. 사실 11단계 뱃지가 나올지도 몰라서 끝인지는 모르겠다.

PS를 공부했던 절반 이상의 시간이 담겨있는 만큼, 그동안 여러모로 느낀 점을 돌아보려고 한다.


시작

스트릭이 처음 생긴 날은 2021년 7월 19일이었는데, 내가 유일하게 스트릭을 못 채운 날이기도 하다.
그래서 더 기억에 남는데, 저 날은 내 생일이자 군대에서 처음 취사지원을 갔던 날이었다. 자대배치를 받은 지 얼마 안 돼서 싸지방 코딩에 적응하던 중이었고, 하루종일 설거지만 하니 힘들어서 '하루만 쉬어야지..' 했는데 하필 그날 스트릭 시스템이 도입되었다. 그래서 이 뱃지를 얻지 못했고, 7등으로 뱃지를 얻게 됐다.


PS in 군대

군대에서 문제를 푸는 건 어렵지 않지만, '하루도 빠지지 않고' 문제를 푸는 건 정말 어려웠다.
가령 밤샘근무를 하거나 장기간 훈련이 있는 날이면, 미리 보험용 문제를 만들어두고 하루에 하나씩 제출되도록 세팅해야 했다. 보험용 문제의 코드가 정답이라는 보장도 없어서 날짜의 2배 정도의 문제를 준비해뒀던 기억이 난다. 

지금까지 스트릭의 절반은 군대에서 채웠던 만큼, 아쉬운 점도, 좋은 점도 많았다.

먼저 스스로 아쉬웠던 점은, 이때 알고리즘을 더 폭넓게 익혀둘걸..하는 후회가 된다.
나는 군대에서 엄청난 실력 상승을 바라기보다는, 그냥 감을 잃지 않고 스트릭을 채우는 것만 해도 어디냐는 생각을 했었다. 그래서 하기 싫은 태그보다는 그냥 수학이나 구성적, 애드혹 문제만 많이 풀었다. 
그런데 대회에 나오는 저런 태그의 문제들이 주로 감당하기 힘든 난도로 나와서 그런지, 전역 후에 실력이 늘었다는 느낌이 별로 들지 않았다.(오히려 PS 전성기는 입대하기 직전이었던 것도 같다. 이때는 SCC나 2-sat 문제도 잘 풀고 그랬는데...)

군대라서 할 수 있었던 것들도 많이 있다.
일단 시간이 정말 많았다는 것. 시계가 멈춰버린 곳인 만큼 PS는 킬링타임으로 최고였고, 남는 게 시간이라 겁 없이 다이아 문제에 도전할 수 있었다. 이때 제비(Diamond 2) 문제를 처음 풀었는데, 사실 풀었다기보다는 출력 예제를 분수로 변환한 다음 입력 예제에서 규칙을 찾아 정답 수식을 찍어서 맞혔다. 비슷한 느낌으로 Silver-16(Diamond 4)blobfacepalm(Diamond 3)같은 것들을 풀었는데, 작은 수첩에 적어놓고 훈련 때나 근무 중에 숫자놀이 하면서 규칙을 찾았다. 이걸 지금 하라고 하면... 시간도 아깝고 코테에도, 대회 연습에도 아무 도움이 안될 거라 절대 안 할거지만, 군대라서 가능했던 도전이 아니었을까.
그래도 이런 좁고 깊은 고민들이 교내대회 문제들을 만드는 데는 도움이 되기도 했다.(근데 올해 문제는 어떻게만들지)

그리고 무엇보다도 군대는 습관을 들이기 최적의 환경이었다. 그냥 쳇바퀴 같은 1년 반의 일상에 백준을 추가했다. 스트릭이 끊길 뻔한 위험도 몇 번 있었는데, 하루는 야간 근무 중에 갑자기 새벽 4시 반에 '아 스트릭 안 채웠다!' 라는 생각이 번뜩 들어서 휴대폰으로 제출했던 적도 있다.(스트릭 날짜 초기화 기준시각은 오전 6시이다..) 졸다가도, 술 먹다가도 스트릭 생각이 나는 거 보면 습관이 참 무섭다.

이건 장점인지 단점인지 모르겠지만...
온라인 IDE를 사용할 시간이 한정적이다 보니 손 코딩이나 메모장 코딩을 자주 하게 됐는데, 그래서 코드를 좀 더 간결하고 꼼꼼하게 작성하게 됐다. 하지만 동시에 짧은 코드에 대한 약간의 강박이 생겨서, 가독성을 신경 쓰지 않고 if문을 삼항연산자로 고치거나, 불필요한 괄호를 보면 참지 못하는 병이 생겼다. PS용 코드야 본인만 알아보면 상관없다지만, 나중에 내 코드를 누군가에게 보여주거나 스스로 다시 볼 때도 불편한 때도 있었다.


게임을 하지 않았다면..?

군대에서 롤토체스(TFT)도 PS랑 비슷한 비중으로 했던 것 같다. 이때 챌린저도 찍어보고 스트리머나 국가대표도 게임에서 만나보고 나름 인상 깊은 경험들을 했지만, 이 시간을 PS에 몰빵했다면 어땠을까? 하는 생각도 든다. 당시에는 '롤토체스도 머리 쓰는 게임이니까~'라든가, '챌린저도 찍어봤는데 내가 마음만 먹으면 못할 게 뭐임?'이라는 합리화를 했었는데... 요즘 생각해보면 이 합리화가 아예 틀린 생각은 아닌 것도 같지만, 내가 관심없는 일에는 마음을 잘 안 먹는 게 문제인 것 같다.

근데 아마도 실제로 PS만 하면서 살았다면 나는 미쳐버렸을 거다. 공부 하면서 능지의 한계와 답답함이 느껴질 때 힐링할 수단이 필요했고, 롤토체스가 그 역할은 제대로 해준 듯하다. 롤토체스를 하면서도 재능의 벽이 느껴지긴 했지만... 그럴 때쯤 다시 PS로 돌아가면 그만이다.

사실, PS 생각을 잠시 머리에서 비우고 리프레시할 수 있는 취미라면 무엇이든 상관없을 것 같다. 아마 게임을 안 했다면 운동을 같이하지 않았을까?


변화 / 앞으로의 계획

전역하고 몇 년 사이에 집중력이 좀 떨어졌다. 예전에는 문제 풀 때 옆에 라이브 방송을 틀어놔도 집중이 잘됐는데, 언제부턴가 노래만 들어도 정신이 노래 가사에 꽂힌다.(이게 정상인가..?) 어쨌든 요즘은 빗소리나 피아노 커버곡을 듣는 편인데, 개인적으로 집중력을 높이려면 도파민 디톡스를 해야 할 것 같다.

최근에 또 변화한 점이 있다면, 문제를 보고 도망치지 않기로 했다.
이 시기를 돌아보니, 해설을 보는 게 자존심이 상했는지 어느샌가 태그를 까보고 풀기 싫거나 오래 걸릴 것 같은 문제들을 거르고 있었다. 풀이가 보자마자 감이 오거나 풀어도 도움이 안될 것 같은 문제도 거르긴 했지만, 이렇게 문제를 편식하면 도움이 될 리가 없다. 그래서 태그를 가리고 풀어봤는데, 실제로는 오히려 태그에 없는 방법으로 문제가 풀린 적이 많았다. 역설적으로 태그를 보는 것이 생각이 편향되어 방해될 수 있다는 것을 알았다. (예를 들어 이 문제는 삼분 탐색으로 풀었고, 이 문제는 처음에 유니온 파인드로 접근하다가 결국 안 쓰고 풀었는데 태그를 봤다면 더 오래 걸렸을 것이다.)  친구에게도 태그를 가릴 것을 추천해봤는데, 난이도에 위축되어 잘 도전하지도 않던 골드 상위 티어 문제들을 막 푸는 걸 보고 놀랐다. 요즘은 Platinum3 dp문제들을 풀고 있는데, 모르는 풀이는 덮어두는 게 아니라 구글링하면서 핵심 관찰들을 이해하고, 그걸 잘 구현하는 데 초점을 맞추면서 어려운 문제에 익숙해지려 노력 중이다.

이제 올해가 마지막인 ~CPC들이 남았고, 코드포스 오렌지, 앳코더 블루, solved 다이아1 찍어보기 등 할건 많은데. 이중 하나라도 달성할 수 있을까...? 일단은 ICPC, USACO같은 대회문제들을 풀면서 약점을 없애는 데 집중해야겠다.