Doby's Lab

[가끔은 말로] BOJ 골드를 찍었다! (+TMI같은 주관적인 tip) 본문

Daily

[가끔은 말로] BOJ 골드를 찍었다! (+TMI같은 주관적인 tip)

도비(Doby) 2021. 9. 26. 14:04

 드디어 백준 골드를 찍었다. 골드를 찍으면 블로그에다가 골드를 찍기까지 과정이나 이렇게 하면 좋을 거 같다는 생각들을 정리해두고 싶었다.


대단한 건 아니다.

 말 그대로 대단한 게 아니다. 골드가 되었지만 내 실력은 골드가 아니라고 생각한다. 아직 그래프 이론, 해싱, 그리디 알고리즘 등 다른 기초 알고리즘은 건들지도 않았었다. 이분 탐색, 백트래킹 조금, Monotonic Stack 조금 이 종류들만 깊게 풀었었는데 골드에 금방 왔다. 이제 골드가 되었으니 다른 알고리즘들도 개념 공부하고, 문제로 깊게 들어가 보면서 백준을 풀어나가야 할 거 같다.


티어가 서열 척도가 될 수는 없다.

 위에서 말한 거처럼 한 알고리즘을 깊게 파서 티어가 높아지는 경우가 있다. 이럴 경우 장점도 있지만 다른 알고리즘들을 모른다는 단점이 생긴다. 그리고, 티어는 남과 비교할 수는 없다. 내가 골드고 다른 사람이 실버라고 해서 절대 절대 그 사람을 무시할 수 없고, 무시할 생각도 없다. 티어는 단지 내가 얼만큼 백준을 붙잡고 살았고, 스스로를 만족시켜주는 딱 그 정도의 척도여야 한다.


코드는 도구일 뿐이다.

 조금씩 알고리즘 문제들을 풀어보면 알겠지만 코드는 도구일 뿐이고, 도구여야 한다. 문제를 읽고, 무엇을 출력해내야 하는지를 알고 바로 키보드를 잡는다면 오히려 더 시간을 빼앗기는 순간들을 보게 된다. 문제를 읽고, 무엇을 출력해내야 하는지를 알고 출력하기 위해 어떻게 접근하고 논리가 도출되는지 알아야 한다. 무조건! 그렇게 접근해야 문제가 풀린다. 


코드는 도구이고, 알고리즘은 보조 장치이다.

 알고리즘을 공부하려는데 알고리즘이 보조라고 하니 조금 문맥이 안 맞아 보이기는 하지만 정말 보조 장치가 되어야 한다. 문제를 보고 나서 '아 이걸 구해야 되는구나'를 파악하고, '이 알고리즘이면 풀리지 않을까?'라는 생각에 도달하게 된다.


알고리즘을 모르면?

 나도 그랬다. 처음엔 다른 사람들이 문제 푸는 걸 볼 때 '이건 이 알고리즘으로 풀면 되겠죠?' 하는데 다른 세상 사람 같았다. '저런 생각이 돼?'만 무한 반복했다. 그래서 그나마 찾아냈었던 방안이 '알고리즘 말고 자료구조로 접근해보자'였다. 자료구조라고 해봤자 그때 나한텐 '스택, 큐, 덱' 뿐이었다. 그래서, 문제를 풀 때마다 '이거 스택으로 풀 수 있지 않을까?' 이런 식으로 접근해보려 했었다. 그러다가 '이 알고리즘 공부해봐야겠다'라고 해서 점차 파이를 넓히고 있다.


알고리즘 문제 공부법(?)

 공부법이라기보다 백준을 시작하면 뭐부터 풀어야 하고, 어떻게 다음 단계로 넘어가야 할지를 고민했었다. 백준에서 제공하는 '단계별로 풀어보기', '알고리즘 분류' 카테고리가 있었지만 적어도 나에게만큼은 더 좋은 길이 있어서 그 길로 갔다. solved.ac(티어 제도)를 연동시켜서 solved.ac에서 제공하는 클래스 별로 하나씩 풀어나가는 게 나한테는 효율적이었다. 잘 안 풀리면 문제 찾아보고, 이런 알고리즘이 쓰였다 그러면 해당 알고리즘 공부해보고, 이 알고리즘으로 다른 문제들 풀어보면서 공부를 했던 거 같다.


한 문제에 집착하기

 이건 사람 by사람으로 나뉠 거 같다. 나는 한 문제가 막히면 2~3시간 해도 논리조차 접근이 안 되면 풀이를 찾지만 더 시간을 소요해야 공부가 되는 사람들도 있을 것이다. 그리고, 풀이를 찾을 때 거의 광기(?) 수준으로 남의 코드를 봤었다. 논리도 얻을 수 있지만 간혹 가다가 그 사람의 코드 센스(?)까지 얻을 수 있는 기회들이 많았다.


글 마무리 + 플레티넘..?

 이번 9월은 실버 3까지만 도전해보자 했었는데 골드가 되었다. 기분이 좋으면서도 다른 알고리즘들도 공부해야 한다는 생각들이 가득 차 있다. 당연하게도 인간의 욕심은 끝이 없어서(?) 플레티넘을 가고 싶지만 티어를 목표로 두고 싶지는 않고 다른 알고리즘 지식들을 목표에 두고 싶다. 그리고, 다음 달은 어떤 계획으로 살 지도 아직 고민 중이라 알고리즘을 계속했으면 좋겠지만 다른 언어(자바)나 다른 분야도 공부해보고 싶은 마음이 있기 때문에 이번 달이 마무리되기 전까지는 고민을 해봐야 할 거 같다.

728x90

'Daily' 카테고리의 다른 글

BOJ 플레티넘 4 승급!  (0) 2022.03.21
블로그 대청소 끝  (0) 2022.03.19
블로그 재정비 및 계획  (0) 2022.03.18
22.03.16 근황  (0) 2022.03.16
[가끔은 말로 #1] 첫 글, 개발자가 되기 위해  (0) 2021.07.21