지난 1주차 (https://blog.portalcu.be/8) 에서 갭체크를 해보면서 코드트리를 둘러보고 내 실력을 진단해보았다.
이번 2주차에서는 이번 한 주 동안 코드트리를 써보고 느낀점과 학습 후기를 적어보려고 한다.
학습 계획

지난 갭체크에서 T3 구간부터 불안정하고, T4부터는 부족하다고 표시되었다.
코드트리의 커리큘럼에서, T3에서는 자료구조와 알고리즘의 핵심에 대해 담고 있다. PS 문제 풀이에도 핵심적인 개념들이지만 소프트웨어 개발자나 학부생에게도 중요하게 요구되는 기초적인 지식들을 학습할 수 있다. T4 ~ T6는 실전 PS 문제에서 필요한 다양한 테크닉을 실전 문제와 함께 풀어보는 구간이다. solved.ac로 치면 대충 실버 ~ 골드 이상의 문제들이 모여있다.
만약 시간이 급한 상황이라서 단기간에 실력을 끌어올리고 싶다면 T4부터 공부하고 부족한 부분만 따로 보는게 좋겠지만, 나는 대학교 2학년때 자료구조 알고리즘을 배운지 시간이 좀 흘렀고, 면접때 CS 지식에 답변하는 용도로도 도움이 될 것 같아서 오랜만에 복습을 해보자라는 마음으로 T3 기초부터 다시 복습해보기로 했다.
T3의 커리큘럼

T3의 커리큘럼은 위와 같이 시간, 공간복잡도로 시작해서 배열과 연결 리스트, 유명한 정렬 알고리즘들, Binary Search 등... 학부생이라면 익숙한 다양한 자료구조와 알고리즘을 담고 있다. 참고로 T4~T6 구간과는 다르게, T3 구간은 코드를 쓰는 구간이 매우 적었다. 대신 의사코드를 채우고 개념과 특징을 묻는 퀴즈 문제가 많았다.
코드트리에서 다루는 자료구조나 알고리즘은 딱 코딩테스트를 푸는 용도로 충분한 수준으로 들어있었고, 그 내용이 엄청 깊게 들어가지는 않는 편이었다. (그랬으면 T3 하나만 엄청나게 비대하고 지루한 분량을 차지했을테니..) 지금도 충분히 많은 내용이 들어있었지만, 만약 본인이 자료구조나 알고리즘을 깊게 공부하고 싶다면 전공책을 추가로 읽어보거나 따로 학습해보는 편이 좋을 것 같다. 하지만 대부분은 이 정도만 학습해도 충분할 것이라고 생각한다.
원래 계획에서 이번주는 5챕터까지 풀어보고 싶었는데, 코드트리 푸는 시간을 좀 적게 잡기도 했고, 정렬 챕터에서 알고리즘을 구현하는데 시간이 꽤나 걸려서 3챕터 후반까지만 학습을 완료했다.
레슨별 학습 구성

하나의 챕터는 여러개의 레슨으로 구성되어있다. 각 레슨은 하나의 개념을 아래의 문제들로 공부할 수 있도록 되어있다.
- 문제 풀이에 필요한 기본 개념을 설명하고, 해당 개념으로 풀 수 있는 쉬운 기본 문제
- 점점 어려운 문제들을 풀어보는 연습 문제
- 마지막으로 개념 학습을 체크하는 테스트 문제
퀵 정렬을 예시로 들면,
- 기본 문제에서는 알고리즘의 흐름을 소개하고, 퀵 정렬의 의사코드에서 비어있는 부분을 채워보기
- 연습 문제에서는 퀵 정렬의 특징을 알아야 풀 수 있는 퀴즈, 그리고 퀵 정렬을 실제로 프로그램으로 구현하는 문제
- 테스트 문제에서는 퀵 정렬의 실행 흐름을 읽고 중간 결과를 묻는 퀴즈
같은 식으로 구성되어있다.
또한 각 문제는 해결하는데 걸리는 시간이 표시된다. (아마 학습자들이 걸린 시간을 실제로 측정해서 평균을 내는 것 같다) 따라서 공부를 하는데 시간이 얼마나 소요가 되는지를 미리 살펴볼 수 있어서 공부 계획을 짜는데 도움이 많이 된다. 다만 문제 하나 하나에만 표시되는 부분은 좀 아쉬웠다. 챕터 단위 혹은 레슨 단위로 학습 시간이 적혀 있었더라면 큰 계획을 짜는데에 더욱 도움이 되지 않았을까 싶다.
이번주 학습 후기

이번주는 시간복잡도, 배열&연결 리스트, 정렬 3개의 챕터를 학습해봤다.
시간 복잡도
시간 복잡도는 간단한 내용이라 금방 끝날줄 알았는데, 개념 체크 문제가 정말 많았다. 실전에서 자주 볼 수 있는 패턴들로 시간 복잡도를 물어보는 문제가 정말 많다보니 수학을 잘 모르더라도 경험적으로 시간 복잡도를 학습할 수 있도록 되어 있었다.
배열 & 연결 리스트
자료구조에서 가장 기초 of 기초라고 말할 수 있는 자료 구조들이다. 중간에 Iterator도 같이 들어있었는데, 황금비율 토스트 문제에서 런타임 오류가 발생하길래 뭐지 싶었는데 std::list 에서 erase 메소드를 실행하면, erase 메소드가 반환하는 iterator를 사용해야 한다는 사실을 놓치고 있었다. Iterator를 직접 다뤄본 경험이 없다보니 erase 메소드가 iterator를 반환한다는 사실 자체를 이 문제 풀면서 처음 알았다...
다른 사람들도 이 부분을 놓치기 쉬웠던건지, 토론을 가보니 온통 런타임 오류에 대한 도움 요청글이 빼곡했는데, 하나 하나 다 코드트리 운영진분들의 답변이 달려있었다. 만약 힌트가 필요한 문제가 있다면 토론 탭을 한번 둘러보고, 원하는 질문이 없다면 질문을 올려보면 도움이 많이 될 것 같다.
정렬
사실 대학교에서 알고리즘을 공부하는 학부생이 아니라면 정렬을 실제로 구현해보는 사례는 거의 없는 편이다. 그래도 혹시 몰라서 정렬 챕터도 한번 학습해보았다. 처음엔 별거 아니겠지 싶었는데.. 정렬 알고리즘을 대부분 까먹기도 했고, 생각보다 여러 종류의 정렬에 대한 구현 문제가 많아서 시간을 꽤 써가며 풀었다..

그렇게 이번 한 주도 마무리 되었다. 기초적인 내용이 많아서 쉽게 금방 넘어갈 수 있을 거라고 생각했는데, 생각보다 헷갈리는 부분이나 까먹은 부분이 좀 있었다 (특히 정렬...) 중간 중간에 그냥 스킵해버리고 넘어갈까 싶은 마음이 있었지만, 기초를 탄탄하게 다져야 어려운 문제도 막힘 없이 풀어낼 수 있으니 천천히 복습해가기로 마음 먹었다.
학습 현황에 따르면 이제 1/3 지점을 넘어갔으니, 중반 ~ 후반부 챕터는 얼마나 걸릴지는 모르겠지만 지금 페이스대로면 5월내로 T3를 끝내고, 6월에는 T4를 풀어볼 수 있을 것 같다. 첫 흐름이 괜찮은 편이라 이대로 만기까지 꾸준히 공부하면 될 것 같다!
▼ 코드트리 청약 통장 챌린지 참여하기
https://www.codetree.ai/ko/no-free-lunch-2026/?ref=NKJVVB
#코드트리 #코딩테스트 #코테공부 #알고리즘 #자료구조 #알고리즘 기초
'2026 코드트리 청약 챌린지' 카테고리의 다른 글
| [코드트리 후기] 1주차, 갭체크로 코딩테스트 실력 체크하기 (0) | 2026.05.11 |
|---|