1. 공부 방법 선택 - 책 -> 백준

study-way

백준 페이지 (https://www.acmicpc.net/)

‘알고리즘 공부를 시작해야겠다!’라고 처음 마음먹었을 때, 알고리즘 책을 사서 보면 될 거라고 생각해서 책을 구매했다. 그런데 너무 재미없어서 20페이지도 읽지 못하고 포기했다.

책으로 공부하려는 방법이 실패하고 나서 떠오른 건 ‘백준’ 사이트였다. (결국 알고리즘 공부는 직접 코딩해서 부딪히는 것이 나만의 정답이었다. ‘알고리즘 책’은 부딪히고 실패했을 때가 되어서야 비로소 도움이 되는 것 같다.)

2. 언어 선택 - C++

language

python으로 알고리즘을 하는 사람도 있고 C++로 알고리즘을 하는 사람도 있는데, 나는 C++을 선택했다. 그때 당시에는 그나마 자유롭게 다룰 수 있는 언어가 C++밖에 없었기 때문이다. 그냥 선택지가 하나였을 뿐이고, 다른 거창한 이유가 있는 것은 아니었다.

어떤 언어가 알고리즘 코딩하기 더 좋은 언어인지에 대해서는 양쪽 다 상당히 많은 의견이 있다고 한다. 지금에 와서는 C++과 python 둘다 다뤄보면서 어떤 언어가 어떨때 좋고, 알고리즘에 어떤 언어를 써야 하는지 등에 대해 스스로 느낀점이 많다.

이는 여기서 횡설수설 하기 보다는 나중에 하나의 글로 깔끔하게 정리해볼 예정이다. 지금도 알고리즘 주요 언어로는 C++을 사용하고 있다.

3. 백준 푸는 방법 - 단계별로 풀어보기

step

처음에 백준을 시작하기는 했는데 도대체 어떤 문제부터 풀어야 할지 엄청 막막했다. 그래서 백준에 어떤 기능이 있는지 이것저것 둘러보았고, ‘단계별로 풀어보기’를 발견했다. 거기에 분류된 순서대로 푸니 만족도가 높았다. 난이도도 나름대로 쉬운 것부터 어려운 것까지 정렬되어 있어서, 아주 적절하게 여러 알고리즘들을 연습할 수 있었다.

새로운 알고리즘은 검색해서 배우고, 단계별로 풀어보기 만으로 해당 알고리즘 습득이 부족하다 생각되면 추가 문제들을 찾아서 더 풀어보기도 했다. 그렇게 ‘26 투 포인터’ 까지만 풀고 뒤는 너무 어려워서 거기서 단계별로 풀어보기는 끝내고 다른 방법을 찾기 시작했다.

4. 백준 푸는 방법 - 삼성 문제집, solved.ac

baekjoon-samsung

solved.ac 페이지 (https://solved.ac/)

단계별로 풀어보기를 어느정도 끝내고 나서는 또 백준 사이트 기능을 이것저것 뒤져봤다. 그러다가 문제집의 ‘삼성 SW 역량 테스트 기출 문제’를 발견했고, 여기 있는 문제들을 풀어나가기 시작했다. 이 문제집의 문제들은 구현 난이도가 어마어마해서 구현 실력을 높일 수 있다.

그리고 이 문제집을 풀던 도중에서야 ‘solved.ac’ 사이트를 알게 되었다. 난이도별로 문제에 등급을 매겨서 구분을 해 놓았기 때문에 solved.ac와 백준을 연동시키면 각 문제별로 난이도를 알 수 있었고, 적당한 실버 난이도의 문제들을 골라서 풀어볼 수 있었다.

그렇게 그 이후로는 실버 문제를 많이 풀어보고… 골드 문제를 많이 풀어보고… 심심하면 브론즈 문제도 풀어보면서 딱히 틀에 얽매이지 않고 내키는대로 여러 문제를 풀어나갔다.

5. 마무리

이제 두 번째 글을 거의 다 써 내려가는데, 글 하나를 작성하는 것이 상당히 시간이 오래 걸리고 힘든 작업이라는 것을 깨닫고 있다. 하루에 글 하나 쓰는 것도 버겁다는 말을 몸소 느끼는 중이다. 아마 다음 글은 조금 쉰 다음 내일 작성하게 될 것 같다. 지금까지 썼던 글을 검수하고 정리한 뒤 마무리해야겠다.

댓글남기기