

내소개나 0~1개월차 공부과정은 이전포스트를 참고하길 바란다.

최근 2개월 동안의 공부과정은 대부분 solved.ac의
class 문제를 푸는 시간이었다.
게임에서 퀘스트를 하나하나 해가며 경험치를 쌓는것처럼
class를 달성하고 차곡차곡 티어가 올라가는 재미가 있었기 때문이다.
또, 각 알고리즘의 대표격인 문제들이 반드시 포함되어있는걸 보아
나름 문제 구성도 괜찮은걸로 느껴졌다.(지극히 뇌피셜)
이렇게 백준의 문제들을 IDE로 풀다가,
4월말쯤 2주정도 프로그래머스로 넘어가 이쪽 문제를 풀었다.
너무 IDE에 손이 익어버리면 실전에서 역량 발휘가
안 될 수 있다는 글을 봤기 때문이었다.

프로그래머스에서는 AI추천문제와, 레벨별 문제를 주로 풀었다.

2주간 문제풀이를 진행해본 결과 장단점이 확실히 갈렸다.
몇몇 문제의 테스트 케이스 신뢰성이 떨어진다. 나는 결국 이 단점때문에 다시 백준으로 돌아가게되었다. 대표적으로 이중 우선순위 큐 문제를 예로 들 수 있다. 이 문제는 이전에 백준에서 풀다가 한번 실패했던 문제라 이번엔 풀리라 생각하고 프로그래머스에서 다시 덤볐다. 생각보다 쉽게 풀려서 내가 실력이 늘었나..?? 하고 착각한번 때리고 백준에 코드를 그대로 넣어봤다. 채점결과 10%를 넘기지 못하고 '틀렸습니다'를 만날 수 있었다. 질문게시판에서 반례를 찾을 수 있었고, 보완 후 다시 풀어 겨우 맞았다. 효율성 테스트까지 있는 문제는 프로그래머스에서 풀어도 무방하지만, 테스트케이스가 몇 없는 문제는 위 사례처럼 맞아도 정말 맞은건지 의심된다는게 정말 큰 단점이었다.
해답을 보고 공부할 때 백준쪽 문제의 접근성이 훨씬 좋다. 문제를 풀다보면 결국 도움을 받아야 할 때가 많다. 이때 완전히 해답을 보기보다는 약간의 힌트를 받고 풀고싶을 수 있는데, 백준의 질문게시판이나 태그가 도움이 될때가 많다. 질문게시판에서는 내가 생각치 못한 반례를 발견할 때가 있고, 태그는 전혀 다른방식의 시도를 해볼 수 있게 해준다(브루트 포스로 풀었다가 실패했는데, dp라는 태그가 있다면 dp방식을 고민하게된다). 또, 구글에 백준 0000번 파이썬 이라고만 검색해도 어떤 알고리즘인지, 이를 어떻게 활용하는지 자세하게 풀이해준 블로그글이 흘러넘친다. 특정 알고리즘의 존재조차 몰랐던 비전공자 입장에서는, 검색해보는 과정에서 쉽게 새로운 알고리즘을 공부하여 터득할 수 있다.
위와 같은 시행착오를 거쳐 다시 백준 class 문제들을 풀고있다.
최근에는 어려운 문제를 만났을때 풀기위해 계속 시간을 쏟기보다는
내가 모르는 알고리즘은 없나 힌트를 좀 받는 편이다.
이전에는 코테의 빈출유형, 이를테면 BFS/DFS/DP/DataStructure/String/BinarySearch/BackTracking.. 등의 문제만 풀었었다. 하지만 Gold3 ~ 5정도의 문제만 들어와도 더 새로운 알고리즘 풀이를 만날 수 있었다. 새로 익힌 알고리즘은 union-find, prim, kruskal, Dijkstra, BellmanFord, 위상정렬 등이 있겠다.
물론 코테를 목표로 한다면 너무 마이너한 알고리즘까지는 공부할 필요가 없겠으나, solved.ac 플래티넘을 달성하기 전까지 만나는 알고리즘정도는 모두 공부할 계획이다.
당초 목표로 정했듯 상반기까지, 즉 다음달까지 플래티넘을 달성하고 프로그래머스로 다시 넘어가 효율성 테스트가 잘 되어있는 각종 기업 코테 기출문제를 풀어볼 생각이다.
이제 슬슬 실전에 뛰어들 생각을 하니 걱정반 기대반 싱숭생숭하다..
하루에 몇문제씩 푸셧나요?