컴공에서 알고리즘은 정말 필수다. 3-4학년 기준 알고리즘을 한 문제도 안 푼 학생은 한 명도 없을 거라고 장담한다.

많은 사람들이 백준, 프로그래머스 등 다양한 사이트를 이용하지만, 난 leetcode를 사용한다!

 

그럼 나만의 leetcode 활용법에 대해서 포스팅해보겠다!

 

난 알고리즘을 본격적으로 풀기 시작한게 상대적으로 조금 늦었다고 생각한다. 대충 4학년 1학기 때부터 시작했으니까?

학기 중에 자료구조와 알고리즘을 수강한 것을 제외하면 딱히 알고리즘 공부를 한 게 없었다. 언어는 파이썬, 자바, C++ 중에 뭐로 할까 고민을 했었는데, 파이썬은 학부 연구생 시절부터 인턴을 하는 지금도 계속 사용하고 있고, 자바는 3학년 1학기 때 플젝을 했고, C++는 2학년 2학기 때 플젝을 했으므로, 가장 오랫동안 사용하지 않았던 C++를 쓰기로 정했다.(다시 refresh 좀 할 겸) 그리고 주워듣기로는 C++가 컴파일 속도가 빨라서, 알고리즘 바닥에서는 가장 많이 이용되는 언어라고 한다.(정확하진 않음)

 

그리고 leetcode의 문제를 봤을 때, 위 그림과 같은 따봉과 역 따봉이 있는데, 나는 따봉이 역 따봉에 2배 이상 되는 문제들만 푼다! 역 따봉이 많다는 것은 그만큼 그 문제가 좋지 않을 문제일 테니까 과감히 스킵한다...어차피 풀 문제들은 많다. 그리고 문제를 풀고, accept이 되면 일단 안도의 한숨을 쉬고, discuss 항목으로 가서 역시 따봉을 많이 받은 글 순으로 정렬을 하고 다른 사람들이 제출한 답을 공부한다. 다른 사람들의 답을 리뷰를 하다 보면, 정말 똑똑하고 대단한 사람이 많다는 생각이 든다. 다른 사람들의 질 좋은 답을 review를 하는 것은 정말 중요하다!

 

그래서 처음에는 그냥 무작정 쉬운(Acceptance가 높은)순으로 정렬하고, 가장 쉬운 문제부터 막 풀었다. 아무래도 쉬운 문제 들이다 보니까 겁나 쉽게 풀려서 '오홍 별거 아닌데?'라고 생각했다. 그런데 점점 어려운 문제가 나올수록, 특정한 자료구조를 이용하는 문제가 나올수록 시간만 쏟아내고 문제를 보며 멍만 때리는 시간이 길어졌다. 그래서 아무래도 자료구조를 다시 공부해야 될 듯싶어서(2학년 1학기 때 너무 개판으로 공부했다), 특정 자료구조의 Easy 난이도를 다 풀기로 했다. 예를 들면 stack의 easy문제를 다 풀고(풀면서 다시 stack을 공부하고), queue로 넘어가고, linked list로 넘어가고, tree로 넘어가고... 이런 식이다. 이렇게 하루에 대충 1문제씩 풀었다고 가정했을 때, 한 3-4달을 기초 자료구조를 이용한 알고리즘 문제를 푼 것 같다. 

 

 이제 대충 다시 자료구조 개념이 잡혔다고 생각이 들어서, 이제 다시 쉬운 순서부터 풀기 시작했다! 확실히 자료구조 개념을 다시 refresh하고 문제를 푸니까 더 잘 풀리는 것 같다. 현재 아직도 easy 단계의 문제들만 풀고 있는데, 빨리 medium 단계로 넘어가고 싶다. 다른 것도 할게 많다 보니까 1일 1문제 정도만 하고 있는데, 속도는 중요하지 않고 꾸준하게만 하자는 생각이다. 화이팅!

+ Recent posts