본문 바로가기

Algorithms & Languages/25-1 파이썬 알고리즘 코딩캠프

[알고리즘 코딩캠프 후기] 2주간의 수업 수강을 마친 후기 및 성과

안녕하세요!! 커피러브입니다~!~~!!@!!

이번 겨울에 제가 재학중인 대학교에서 알고리즘 코딩캠프 교육이 열렸어서,

2주 동안 수업을 수강하고 공부한 후기를 적어보려 합니다!!~!

신상 유추 문제 때문에 학교나 교육명이 특정될만한 내용은 적지 않은 점 양해 부탁드려요 ㅠ


신청한 이유

12월 말에, 학교 공지사항에 `알고리즘 코딩캠프 교육 수강생 모집` 공지가 올라왔어요.

 

저는 아직 진로를 고민중이긴 하지만, 백엔드 개발자 또는 AI/데이터 직군 엔지니어로 취업을 희망하고 있어 코딩 테스트 준비와 알고리즘 문제풀이 역량이 필요한 상황이었습니다.

또한, 개발 쪽으로 진로를 확정한다면 3학년 2학기, 늦어도 4학년 올라가는 겨울방학에는 에는 연합 동아리 활동을 시작하고 싶은데, 유명 연합 동아리들은 대부분 코딩 테스트를 요구하고 있어, 

 

'어느 진로를 선택하든, 누가 되지 않을 최소한의 알고리즘 문제풀이 실력정도는 갖추자!!'가 해당 교육을 신청한 이유였습니다.

 

벌써 전공 3학년이지만, 부끄럽게도 과제나 프로젝트만 수행해봤지,

알고리즘 문제풀이는 사이트 가입조차 해본 적 없었기에... 언젠간... 시작해야지... 하고 미루기만 했는데

이렇게 학교 차원에서 교육 공지가 올라오니, 너무 좋은 시작 기회라고 생각한 것두 있고요.


C++ vs. Python

교육 모집은 C++/Python 두 개 반으로 모집했는데,

 

전공 수업 과제나 프로젝트를 C로 수행해 와서 많이 익숙하기도 하고, 알고리즘 문제풀이에 쓰이는 C++는 사실상 C+STL이라고 많이들 말해서 C++반을 신청할까도 고민을 했지만

 

제가 현재 생각중인 진로가 데이터/AI쪽이기도 하고, 파이썬도 학교 수업을 들으며 기본 문법정도는 자신이 있었기에 

파이썬 숙련도도 같이 올리자는 마인드로, 파이썬 반으로 신청을 했습니다.


수강 전 상태 및 사전테스트

코딩캠프 신청 당시, 저는 자료구조와 알고리즘을 학교 수업을 통해 이론적으로 공부했고,

자료구조 수업만 C언어로 수업 및 과제를 수행하였습니다. (알고리즘 수업은 only 이론만)

그리구 파이썬도 따로 수업에서 기본적인 문법을 공부했었구요. 

다만, 알고리즘 문제풀이 사이트에서 문제를 푼 경험은 한 번도 없었습니다 ㅠ

 

1월 말에 예정된 2차 선발 사전테스트를 합격하기 위해, 4주간 파이썬으로 기초적인 알고리즘 문제풀이정도는 할 수 있게 공부해야 했는데요.

그래서 '파이썬 알고리즘 인터뷰'라는 책을 구입해, 7장 '배열' 단원까지 공부하고 리트코드에서 문제를 풀었습니다.

 

그 덕에 1월 말에 시행된 사전테스트에서, 4문제 중 1 2 3번을 맞히고 교육에 입과할 수 있었어요.

(지금 와서 생각해보면 대략 브론즈~실버5 정도 문제였는듯 ㅎㅎ... 문자열 조작이나 배열 같은)


실제 수업 및 과제 진행 과정 

수업은 `2025.2.3(월) ~ 2025.2.14(금)` 2주 동안, 평일 10~17시 총 열흘간 수업이 진행됐는데요.

외부 전문 강사님 한 분에 (저 포함) 학생 4명이서 한 반으로 진행됐습니다.

 

 

기본적으로 오전에는 전 날 과제로 내주신 문제를 라이브 코딩으로 풀이해주시고,

오전~오후 나머지시간에 걸쳐 그 날 분량 수업 진도 나가기 + 배운 내용 관련문제 풀고 강사님 해설로 진행되었어요.

 

수업은 준비하신 교재 + 라이브 코딩 + 화면 손필기 등 여러 도구들로 이루어졌는데,

수업 중간중간에 코딩테스트 전반적인 이야기나 실제 개발자 썰들 등 재밌는 이야기들도 많이 들려주셔서 지루하지 않고 좋았습니다.

 

 

과제는 매일 8~10문제씩 있었는데,

그 중에 일부는 수업시간에 풀고 해설하고,

일부는 집에서 각자 풀어본 후 다음 날 오전에 풀이해주시고,

일부는 고난이도 문제니 교육 이후에 풀어보라고 하신 문제들로 구성되어 있었어요.

 

또한, 과제를 풀고 그 코드를 각자에게 배정된 노션 페이지에 올리면

저녁 또는 주말에 강사님이 보고 코드 리뷰 및 피드백을 남겨주셨어요.

 

 

처음에는 매일매일 꼼꼼히 예복습하고 과제도 싹 다 풀고 블로그에도 정리하고... 하려고 했지만

매일매일 통학으로 학교 갔다 오며 7시간씩 수업듣고 하다보니 모든 걸 완벽하게 하기는 힘들더라구요 ㅠ

 

그래서 후기글을 교육 종료 후 2주 뒤에야 이렇게 올리는 것도,

필기&문제풀이 빵꾸뚤린 부분 보완하다 보니까 2주가 훌쩍 지나버렸네요 ㅎㅎ

수업 내용을 필기하고 정리한 것. 블로그에도 기재되어 있다.
노션 데이터베이스로 과제 문제풀이 관리
강사님께서 올려주신 코드 리뷰.
따로 내가 먼저 질문을 드릴 수도 있었다.


교육 수강 성과

그 전엔 알고리즘 문제풀이 사이트 아이디조차 없던 제가,

2주간의 수업으로 70문제 넘게 직접 알고리즘 문제를 풀고,

이 중 거의 60문제 가까이 블로그에 정리했으며,

'알고리즘 문제풀이를 어떻게 공부해야 할지' 그 방법과, '나도 할 수 있다'는 자신감을 얻을 수 있었습니다.

 

그 결과 최종적으로 마지막 날 모의고사에서 4문제 중 3솔, 그 다음날 사후테스트에서 4문제 중 4솔(추정, 정확한 결과는 안알려줌)을 할 수 있었고,

공부 중에 알게된 추가적인 알고리즘적 내용이나 파이썬의 심화 내용들 또한 블로그에 정리하며,

기존에 목표했던 '파이썬 숙련도도 겸사겸사 올리기'도 달성할 수 있었습니다.

총 94문제 중 74문제 풀이 완료!!

정말 이 교육을 신청하고 수강한 게 제 대학 생활 중 가장 잘한 선택이라 생각했을 정도로 너무 만족스러웠어요 ㅎㅎ


이후의 알고리즘 공부 계획

수업 시간에 다룬 유형들은 아래 접은글(더보기)의 형광펜 칠한 부분과 같은데,

2주라는 짧은 교육 기간에 모든 유형을 다 다룰 수는 없다보니 ㅠ

최대한 빈출되는 유형들 위주로, 꽉꽉 눌러서 수업이 진행되었습니다.

더보기

입문

📌 자료구조

  • 변수
  • 문자열
  • 리스트
  • 이차원 리스트
  • 해시(집합, 딕셔너리)

📌 알고리즘

  • 단순 조건문, 반복문
  • 재귀
  • 완전탐색, 브루트포스
  • 이차원 리스트 순회
  • 정렬
  • 그리디

2️⃣ 기초

📌 자료구조

  • 스택
  • 큐, 덱
  • 그래프 (인접행렬, 인접리스트)
  • 이진 트리

📌 알고리즘

  • 소수판별 (에라토스테네스의 체)
  • 이분탐색, 투포인터
  • 누적합 (1차원, 2차원)
  • 이차원 리스트 델타탐색
  • 그래프 탐색 (DFS, BFS)
  • 순열, 조합, 중복순열, 중복조합
  • 백트래킹
  • 트리의 순회 (전위, 중위, 후위)

3️⃣ 중급

📌 자료구조

  • 우선순위 큐, 힙
  • 분리집합 (유니온-파인드)
  • 최소신장트리 (MST)

📌 알고리즘

  • 크루스칼
  • 다익스트라
  • 벨만 포드
  • 플로이드 워셜
  • 위상정렬
  • 동적계획법 기초 (배낭문제, LCS, LIS, 외판원 순회 등)

아래부터는 기업 코딩테스트에서는 잘 나오지 않는 아득한 영역이니 참고만 하세요!

4️⃣ 고급

📌 자료구조

  • 세그먼트 트리
  • 트라이
  • 접미사 배열, LCP 배열
  • 강한 결합 요소(SCC)
  • 트립

📌 알고리즘

  • 동적계획법 중, 고급 (트리 DP, 비트마스킹 DP, 동적계획법 최적화 등)
  • KMP, 라빈 카프
  • 아호 코라식
  • 맨버-마이어스
  • 코사라주, 타잔
  • 이분매칭
  • 매내쳐
  • 컨벡스 헐
  • 최소비용 최대유량 (MCMF)
  • 고속 푸리에 변환 (FFT)
  • 센트로이드 분할
  • 등등…

 

그래서 코딩테스트 대비를 위해선 추가적인 학습이 반드시 필요한데

 

저는 알고리즘 대회에 나갈 생각은 없기도 하구,

(아직 진로를 결정하지 못해서...) 만약 AI쪽으로 대학원에 가거나 하면 코딩 테스트가 필요없어질 수도 있기에,

일단은 과제에서 아직 못 푼 고난도 문제들을 마무리하고

이후엔 지금까지 푼 유형들에 대해서 백준 단계별로 풀어보기(~42단계)를 풀며, 꾸준히 감을 잃지 않는 정도로 복습해나갈 예정입니다.

 

 

벨만 포드, 플로이드-워셜, 위상 정렬, DP` 고난도 유형들은(물론 자료구조 및 알고리즘 시간에 이론적으로, 그리고 일부는 C언어 구현까지 공부한 내용이긴 하지만) 추가로 코딩테스트 대비 용으로 공부하기엔 확실히 시간이 들어가니까요.

 

당장은 기존의 수강 이유였던 `어느 진로를 선택하든, 누가 되지 않을 최소한의 알고리즘 문제풀이 실력정도는 갖추자`는 달성했다고 생각하기도 하고,

제가 당장 더 하고싶은 공부들을 하는 데에 시간을 쓰고 싶기에

알고리즘 문제풀이는 제 진로가 확실해지고 정말 필요해지기 전까진 기존에 공부했던 유형들 복습만 하며, 감만 유지할 계획입니다.

(그치만, `소수 판별, 이분 탐색, 투 포인터, 누적합` 이런 유형들은 난이도도 별로 안어려워보이고, 재밌기도 해 보여서 조만간 공부해보고 싶긴 하네요.)