드디어 수문장을 벗어나서 플래티넘 4가 되었다.
프로잭트 돌린다고 정신 하나없이 눈뜨면 컴퓨터 앞에만 앉아있는데
그러는 와중에도 꾸역꾸역 하루 1~2시간씩 문제를 풀다보니 결국 점수는 올랐다.
레이팅을 보면 플래티넘 진입 이후부터 점수 상승폭이 확 줄어버렸다.
백준 레이팅 측정 방식 때문인데, 내가 푼 문제의 상위 100개 등급합을 점수로 환산하기 때문이다.
위는 내가 푼 상위 100문제의 요약이다.
그러니까, 골드4 이하의 문제를 풀면 점수가 오르지 않는다는 것이다.
점수를 올릴려고 하면 난이도가 높은 문제를 풀어야 하고, 높은 난이도를 풀기 위해서 알고리즘을 공부해야 하고, 고민해야 하는 시간이 많아야 하는데 전혀 그럴상황이 아니다 보니 골드문제 평탄화를 하는 중이라고 이해하면 편하겠다.
참 슬픈게, 골드3 문제를 하나 풀면 1점오른다..
그에 반해 푼 문제의 수는 일정한 기울기를 가지며 우상향하고 있다.
적어도 하루에 한문제씩, 꾸준히 풀자는 다짐이 아직까지는 잘 지켜지고 있는거 같다.
꽉꽉 채워져 가는 스트릭을 보면 뿌듯한 마음이 든다.
이쯤왔으면 티어를 어떻게 올리는가, 알고리즘을 어떻게 접근해야 하는가에 대한 개인적인 생각을 적어도 괜찮다고 판단했다..
목적에 따라 나뉜다.
사실 나는 1번이 목적이긴 하지만 2번쪽으로 많이 기울었다.
문제 풀면서 나오는 스트레스를 즐기는 독특한 인간이라 그런지는 몰라도 알고리즘을 배우면서 실용성 보다는 '이게되네' 하는 느낌이 재밌었다.
하지만 코딩테스트를 준비하고 있다면 절대 2번의 접근법은 가지면 안된다.
왜냐하면 코테 문제 푸는 방향성이 완벽하게 달라지기 때문이다.
간단하다. 프로그래머스 코테 고득점 kit에 있는 모든 문제를 달달 외우고 왜 그런 코드가 나왔는지를 완벽하게 파악해야 한다. 그 이후 프로그래머스 2~4레벨 문제를 순회하면서 양치기를 해야한다.
엥 저는 프로그래머스 1레벨도 힘든데요? 라는 사람들은 기본적인 알고리즘 감이 안잡힌거니 바킹독 아저씨 강의를 듣자.
시중에 있는 알고리즘 문제집도 있긴 하지만 개인적인 추천은 무조건 바킹독이다.
문제집들은 글자의 양도 너무 많고 알고리즘을 처음 공부하는사람에게 친절하지 않다.
책은 공부 좀 해서 감을 잡은사람들이 읽으면 효과가 좋다.
알고리즘을 하나도 모르고 이제 시작한다면 다음과 같은 방법을 추천한다.
바킹독 기본 알고리즘 강의와 프로그래머스 0레벨 기본문제를 싹 순회하면서 푼다.
프로그래머스 0레벨 중에서도 골때리는 문제가 상당하니까 시스템을 익히는 선에서만 풀면 된다.
양치기를 시작한다. 집중해서 이 알고리즘이 왜 나왔고, 어떻게 쓰이는지를 중점으로 생각해라.
가장 중요한것은 OOO 알고리즘! 이라고 말하면 그 알고리즘이 돌아가기 위한 기본적인 구조가
자다가 물어봐도 튀어나올 정도로 나와야 한다. 코테는 순발력 싸움이기 때문에 기초 알고리즘을
머리에 박아놓고, 하나하나 대입하면서 써먹어야된다.
코테를 처음 준비하면 1달정도는 방에서 나오지도 말고 코딩공부만 하루에 10시간씩 하는걸 추천한다.
알고리즘 공부는 기초체력과 같기 때문에 한번 잘해놓으면 나중에 유지하기도 편하고 문제푸는 효율이
달라진다. 또한 깔짝깔짝 하루 1시간씩 하면 머리에 들어오지도 않는다. 시간이 남는다면 해보자.
이후 프로그래머스 3레벨은 무난하게 풀고 4레벨도 괜찮게 풀 정도의 실력을 목표로 계속 공부하자.
목표를 이렇게 잡으라는거지 4랩 몇개 풀었다고 공부 손놓지는말고.
문제를 풀때 30분 고민, 2시간 트라이, 나머지는 해설을 본다.
뭔 말인고 하니 30분동안 고민해도 문제 풀이가 생각안나면 해설을 보고
2시간동안 코드를 짜도 답이 안나오면 해설을 봐라는 뜻이다.
당신은 다익스트라 같은 천재가 아니기 때문에 2시간 동안 풀어서 안풀리면 그냥 포기하는게 편하다.
(제발 나처럼 주말 30시간씩 박으면서 문제 하나푼다고 스트레스안받았으면 한다.)
알고리즘 풀이는 빅데이터 기반 학습에 기초한다고 생각한다. 무조건 양치기이다.
기본적인 가이드는 이정도고 본인의 입맛에 맞게 공부를 열심히 하자.
그냥 백준문제 티어 양치기 하면서 클래스나 올리면 된다.
백준은 문제 푸는 방식도 코테랑은 거리가 좀 있다.
물론 코테에 적합한 문제가 많은것도 사실이지만, 창의력이나 문제 접근 방식에서 차별화가 되는 문제의 양이 상당히 많기때문에 특정 알고리즘을 효율적으로 짜는 것이 아닌, 다양한 방식의 접근을 중점으로 잡고 있다.
그래서 코테볼꺼면 백준보다는 프로그래머스 풀어라 라는 말이 나오는거다.
그냥 목적 자체가 다르다. 백준은 정석적인 문제도 많지만 알고리즘 대회용 문제가 상당하기 때문에 코테 공부용 문제를 고르기 까다롭다.
하지만 알고리즘 푸는거 자체가 좋아서 취미로한다? 그럼 국내 사이트에서는 백준이 독보적인 원탑이라고 생각한다.
솔직하게 생각을 해보자. 카카오 코테 문제들보면 백준 플레급으로 어려운 문제 많은데
코테에서 ccw나 mcmf, 2sat 같은 문제가 나오겠는가? 절대 안나오고 진짜 어렵게 나와봤자 골드1짜리 빡구현 문제가 나올것이다.
코테를 목표로 한다면 기초 알고리즘을 완벽하게 이해하고 적용을 어떻게 해야하는가 다양한 문제를 접해보고
알고리즘이 취미라면 그냥 새로운 알고리즘 나올때마다 공부하면서 풀고싶은 문제를 풀면된다.
사실 백준 플래쯤 찍으면 코테에서 뭔문제가 나오건간에 접근이랑 테케솔은 그냥한다.
문제는 엣지케이스나 생각지도 못한 반례가 나오는거에 대한 대처능력이 떨어진다.
알고리즘 처음 배울때부터 지금까지 고민하고 경험했던 것에 기반한 글이다.
부디 이 글을 읽는분들은 처음부터 목적, 방향성을 잘잡아서 좋은 결과를 이뤘으면 한다.