Tags: , ,

Categories:

3 minute read

루비 5를 찍은 후기


작년 9월에 백준 문제를 풀어보기 시작한 순간부터 대략 10개월이 지났습니다. 처음에는 개발 공부를 위한 하나의 성장 도구로서 알고리즘 공부를 시작했고, 시간이 지나 유튜브를 시작하고 하나의 재미 및 목표로서 알고리즘 공부를 했습니다. 하지만 알고리즘 문제를 뛰어나게 잘 푼다고 해서 특혜를 주는 회사는 거의 없습니다. 저도 이제 목숨 걸고 PS를 하는 일은 딱히 없을 것 같습니다만 아무튼 이 글을 읽을 많은 분들이 같은 고민을 할 것 같아 아래에 PS를 위한 조언을 작성해보겠습니다.

다이아 1에서 50정도 AC rating이 남았을 때가 가장 고비였는데, 모순적이게도 제 밑천이 다 들어나는 느낌이었습니다. 더 이상 제 실력으로는 풀 수 있는 문제가 거의 남아있지 않았기 때문입니다. 코드포스, 코드쉐프, 일본, 중국 자료까지 봐가며 40시간 이상 걸리며 열심히 풀어낸 루비 5 하나가 ac rating 6밖에 주지 않는 현실이 굉장히 힘들었습니다. 이를 이겨낸 제 스스로에게 감사하면서, 이 고난을 먼저 이겨내고 더 멀리 가있는 천상계분들께 존경을 표합니다. 또 제가 여기까지 올 수 있었던 것은 아래와 같은 분들이 열심히 블로그 활동을 해주신 덕분입니다.

나정휘님 블로그 : justicehui
구재현님 블로그 : koosaga
박진한님 블로그 : jinhan814
최재민님 블로그 : jh05013
테페리님 블로그 : teferi00
imeimi님 블로그 : imeimi2000
cubelover님 블로그 : cubelover
rkm0959님 블로그 : rkm0959
삼성소프트웨어 멤버쉽 블로그 : secmem


PS를 위한 조언


알고리즘 공부를 어떻게 해야하는가?


개인적인 생각이 많이 섞여있으니, 어느 정도 걸러들으시기 바랍니다 :smile:

카피(복붙)는 절대적인 금기입니다. 코드의 원 제작자에 대한 실례이기도 하죠. 사실 저도 이런 실수를 저지른 적이 없지는 않습니다. 하지만 항상 반드시 제 코드를 짜서 더 빠른 시간에 통과할 수 있도록 했습니다.


나는 돌대가리인가?


PS를 하시는 분들 모두가 가진 고민거리가 있을겁니다.

“나는 돌대가리인가?”

결론부터 말하자면, 맞습니다. 저도 여러분도 돌대가리입니다. (아니신 분들은 죄송합니다..) 갑작스레 욕을 한 것 같아 죄송하지만, 사실 돌대가리일 수 밖에 없기도 합니다.

정정해드리자면 저와 여러분들은 “상대적 돌대가리”입니다. 대부분의 알고리즘을 개발한 사람들은 범접하기 힘든 천재들임을 여러분들은 부정해서는 안됩니다. 제가 지금 kmp 알고리즘을 3분 안에 구현할 수 있다고 해서, 무에서 그 알고리즘을 개발하는 게 가능했을까요? 심지어 그리스 시대에 태어났다고 해서 에라토스테네스의 체를 개발했을 것 같지도 않습니다. 인정하는겁니다. 천재가 아님을 ㅠ

종종 자료를 보고 구현하는 것을 힘들어하시는 분들이 있습니다. 수학 공부할 때, 답지를 절대 보지 않으셨던 분들이시겠죠. 저도 그랬구요. 하지만 개념원리조차 공부하지 않고, 쎈을 풀 수 있을까요? 힘듦니다. 천재들이 정립해놓은 개념을 꼭 공부하시고, 자료를 마음껏 보시기 바랍니다. 많이 참고하고 공부하는 것이 중요합니다.

개념을 익히고 나면, 그 때부터 여러분들이 많은 고민을 해야하는 타이밍이 되는겁니다. 여기서 또 여러분들의 고민거리가 또 늘어날 겁니다.


답을 봐도 괜찮을까요?


이 부분은 사람마다 많이 갈리는 부분입니다만 제 생각은 “네” 입니다. 먹고 살아야하는데 PS 때문에 과도한 스트레스를 받고 병에 걸리면 안되겠죠. 또 답을 보더라도 얼마만큼 고민하고 보냐도 하나의 질문이 될텐데 제가 문제풀 때 기준은 1시간 정도입니다. 남들보다 긴 편은 아니긴 하고, 비판하실 분들은 하셔도 좋지만 PS로 연구해서 먹고 살게 아니라면, 한 문제 가지고 20~30시간 고민하기엔 제겐 인생이 너무 짧습니다. (물론 답이 없거나, 불타오르게 하는 경우엔 1달 넘게 고민하기도 합니다.)

PS로 연구하며, 평생 답이 없는 문제들을 다뤄야하시는 분들은 몇 시간이 걸리더라도 스스로 답을 찾아야하겠지만, 저희는 그렇지 않습니다. 답을 보는 것을 너무 주저하진 않았으면 좋겠습니다. 다른 이들의 코드를 보고, 이해하고, 스스로의 코드로 녹여내는 것 역시 하나의 능력이고, 더욱 효율적인 풀이를 알아낼 수 있습니다. 답을 보는 행위를 커튼을 열고 엿보는 행위가 아닌 그들이 만들어놓은 방을 방문하고 참고하는 행위라고 생각하시면 좋겠습니다.


사실 이 부분에 대해서는 많은 분들이 고민하시고 이야기하신 부분입니다.

다양한 생각들을 첨부합니다. 직간접적으로 얽혀있는 이야기들입니다.

안수빈님 : 개인이 생각하는 알고리즘(PS/CP) 공부 유형 및 보완법
zlzmsrhak님 + 구재현님 코멘트 : 저는 Competitive programming이 싫습니다.


번외


목적이 코테인데 어떻게 공부할까요?


이런 질문을 하시는 분들은 대부분 초심자입니다. 필수적으로 ‘깨부’(깨지고 부서져라)하셔야 합니다. 그래야 실력이 늡니다.

두 가지로 나누어서 답변 드리겠습니다.

  • 급하게 코테를 공부해야합니다.
(1) 배워둔 언어가 없다면 무조건 파이썬 쓰세요.
(2) 이것이 취업을 위한 코딩테스트(나동빈 저) 공부하시면 좋습니다. 유튜브에 나동빈님 무료강의가 있으니 같이 들으면 좋을거에요.
(3) 문제 set들을 풀어봅니다. 여러분 시간이 허락하는 동안 여기에 있는 문제를 최대한 풀어보세요.
    - solved.ac 기준 class 3까지
    - 백준 단계별로 풀어보기 '강한 연결 요소' 전까지
    - 백준 code.plus 문제집 - '코딩 테스트 준비'
    - 프로그래머스 코딩테스트 고득점 kit
  • 언젠간 다가올 코테를 대비하고 싶습니다.
위 답변을 참고하면서 플레 3까지 가세요. 피지컬로도 웬만하면 통과할 수 있을 정도가 될겁니다. 
물론 루비 문제 몇 문제 풀어서 가는건 안됩니다 ㅎㅎ


하루에 몇 시간 공부하셨나요?


휴학하고 4개월간은 하루에 순공으로 10시간은 문제만 풀었던 것 같습니다. 이 때, 다이아 4까지 갔었고, 이후 소프트웨어 마에스트로를 준비하면서 그리 오래는 못하고 짬이 날 때 5~6시간씩 투자했었던 것 같습니다.


마무리


아무쪼록 여러분들에게 도움이 되는 글이었으면 좋겠습니다. 루비 5가 여러분들은 대단하시다고 느끼실지 모르겠습니다만, 솔직히 저도 별거 아니라는 걸 느끼고 있습니다. 루비에 도달했음에도, 다이아에도, 심지어 플레에도, 제가 풀 수 있는 문제보다 풀지 못하는 문제가 더 많습니다. 다른 루비 분들은 아마 더 잘하시겠지만, 저는 항상 자괴감을 느끼곤 합니다. 하지만 이 자괴감이 곧 열정으로 다가와 여기까지라도 올 수 있었던 것 같습니다. 마지막으로 항상 명심하시기 바랍니다. PS는 어디까지나 목적, 목표가 될 수 있어도, 나를 갉아먹게 해서는 안됩니다. 그 순간은 여러분이 PS에서 손을 떼야하는 순간입니다.

Leave a comment