어제 새벽에 골드찍고 순수하게 기뻐서 큰맘먹고 올린 첫 글인데 퇴근하고 보니 좀 씁쓸하네요.


이 글도 어떤 시각으로 비춰질지는 모르겠지만 그래도 의도한건 아니었다는 점을 좀 피력하고 싶어서 두번째이자 마지막으로 글을 쓰고 가려 합니다.


저는 11학번이며(이것도 못믿겠다 하시면 사진이라도 찍어서 보여드림) 현재는 윈도우 개발자로 일하고 있습니다.


일할때는 대부분 C#을 쓰지만 상황에 따라 다른 언어도 섞어서 씁니다.


이미 졸업한지도 오래됐고 경력도 4년차에 접어든지라 저한테는 대회는 물론이고 코테도 별 의미가 없습니다. 이직할때는 정말 형식상의 테스트만 치러요.


하다못해 학교 다녔을 때도 가장 관심 있었던 분야는 1순위가 PL과 컴파일러고 2순위가 SP/OS였지 알고리즘 쪽은 아니었습니다.


정말 완벽하게 PS쪽에 관심이 없었어요.


그러다가 한 달 전쯤에서야 친구 한명의 꼬임에 넘어가서 백준을 접했습니다.



이건 제 스트릭에서도 잘 나타나있는데, 9월에 1차로 꼬셨지만 안 넘어갔고, 10월에 2차 꼬임에 넘어가 본격적으로 풀기 시작했습니다. 그 이전엔 건든 적도 없죠.


그런데 상술했듯 저한테는 PS를 열심히 할만한 동기가 재미 외에는 없었기 때문에 나름의 목표를 세워서 해보려 했고, 그게 함수형으로 풀기였습니다.


원래는 하스켈로 하려 했는데 하스켈 채점이 안되더라고요... 그래서 어쩔 수 없이 친숙한 닷넷 + 함수형인 F#으로 선택했습니다.


그래서 진짜로 시작한 지 한 달 정도 밖에 안되었고, 코딩이야 상당히 오래 했지만 PS쪽은 진짜로 아는 바가 없기 때문에 피린이라는 표현을 썼습니다.


기만으로 보였다면 미안합니다.


또 아는 게 없으면 루비를 어떻게 풀었냐고 할텐데, 백준에 있는 문제들은 너무 많아 어떤 식으로 문제를 선정할지 난감했습니다.


그래서 어려운 문제나 주제 하나를 정해서 파고 들며 그와 관련된 문제를 가능한 한 최대한 푸는 방식을 택했습니다.


목표로 한 문제를 해결하기 위한 내용을 찾아보면서 공부하다 보면 하위 티어 문제는 자연히 풀리는 것이죠.


물론 모든 문제가 이런 식으로 선택됐다는 것은 아닙니다. 가끔 한두문제씩 주제와 벗어난 문제를 풀기도 했죠. 하지만 대체적으로 그렇다는 겁니다.


여하튼 저런 방식으로 공부하기로 했고 선택된 첫 주제가 LCS였으며 현재 통과한 6개의 루비 문제 중에 4개가 LCS문제입니다.


다음으로 선택한 문제는 '17646 - 제곱수의 합 2 (More Huge)'였으며 이를 해결하기 위해 학부 정수론과 각종 제곱수에 관련된 정리, 소수 판별 및 소인수분해 방법, 이산제곱근 등을 공부했고 그 과정에서 구현한 알고리즘 혹은 하위 개념을 제대로 이해했나 확인하기 위해 해결한 문제들이 많습니다.


결국 목표로 한 문제도 통과했다는 점과 현재까지 통과한 다이아 문제가 전부 LCS 아니면 위에 언급한 개념들을 다루는 문제라는 점, 여태까지 그래프 관련 문제는 단 한개도 풀지 않은 등 태그 분포가 다소 기형적이라는 점 등을 보고 어느 정도 납득을 하셨으면 좋겠습니다.


현재는 Parsing 문제 중 인터프리터에 가까운 문제들을 풀려고 하고 있으며 F# 구현 난이도 확인을 위해 적당히 쉬운 문제(4341 - 연립 방정식)를 푼 상태입니다. 그럭저럭 괜찮게 된다는 것을 확인했으니 비슷한 부류의 다른 문제들을 우선적으로 풀 것 같군요.


좀 서글퍼서 주저리주저리 썼지만 여하튼 쓰고 싶은 말은 다 썼으니 진짜로 가보겠습니다. 더 이상 글은 쓰지 않을 것 같지만 만약에 글을 또 쓴다면 그때는 최소한 100문제 채운 이후가 되겠군요. 그게 언제일진 모르겠지만요.