2021-09-27 Mon ~ 2021-12-05 Sun / 12주간
-
해당 스터디는 모든 알고리즘을 정복하는 것을 목표로 하지 않습니다.
-
자신만의 알고리즘 문제 풀이 베이스캠프를 만드는 것이 목표입니다.
-
베이스 캠프의 사전적 의미: 산이나 탐험을 할 때에 근거지로 삼는 고정 천막
-
알고리즘 이라는 높은 산을 오를 때, 항상 참고할 수 있는 근거지를 만들자는 뜻입니다.
-
즉, 앞으로 알고리즘을 학습하면서 항상 참고할 수 있는 나만의 개념집, 코딩 팁, 정리 노트와 같은 개념입니다.
-
JS에서는 다른 언어에 비해 PS용 내장 자료구조와 라이브러리가 부족합니다. (큐, 순열, 조합 기능 부재 등)
-
따라서 PS에 필요한 내장 자료구조 및 라이브러리가 있다면 직접 작성합니다.
- 반드시 새로운 자료구조를 반드시 만들 필요가 없습니다. 기존의 자료구조로 필요한 자료구조를 흉내낼 수 있다면 그러한 접근법을 기록합니다.(참고: 스택/큐/덱)
-
각 알고리즘에 대한 개념, 자신만의 접근법 등을 기록합니다.(참고: 구현 알고리즘)
-
이것이 취업을 위한 코딩 테스트다 with 파이썬(이하, "이코테") 을 교재로 사용합니다.
-
이코테 'PART 02 주요 알고리즘 이론과 실전 문제' 의 각 Chapter를 매주 학습합니다.
-
이코테 'PART 03 알고리즘 유형별 기출문제' 의 각 Chapter를 매주 풀이합니다.
-
3주 학습 후 1주간의 버퍼기간이 있습니다. 학습이 밀린 알고리즘을 학습하거나, 기존에 배운 알고리즘을 복습하는 기간입니다.
-
예시) 1주차: 그리디 알고리즘
- 이코테 'PART 02 CHAPTER 03 그리디': 이론 학습 및 예제, 실전 문제 풀기
- 이코테 'PART 03 CHAPTER 11 그리디 문제': 문제 풀기
주차 | 알고리즘 | 이코테 PART 02 | 이코테 PART 03 |
---|---|---|---|
1 | 그리디 | CHAPTER 03 | CHAPTER 11 |
2 | 구현 | CHAPTER 04 | CHAPTER 12 |
3 | DFS/BFS | CHAPTER 05 | CHAPTER 13 |
4 | 버퍼 (*) | N/A | N/A |
5 | 정렬 | CHAPTER 06 | CHAPTER 14 |
6 | 이진 탐색 | CHAPTER 07 | CHAPTER 15 |
7 | 다이나믹 프로그래밍 | CHAPTER 08 | CHAPTER 16 |
8 | 버퍼 (*) | N/A | N/A |
9 | 최단 경로 | CHAPTER 09 | CHAPTER 17 |
10 | 그래프 이론 | CHAPTER 10 | CHAPTER 18 |
(*) 버퍼 기간은 밀린 알고리즘을 학습하거나 복습하는 기간입니다. 반드시 해당 주차에 버퍼를 가질 필요 없이, 각자의 사정에 맞추어서 버퍼를 가지시면 됩니다. 즉, 4주의 기간동안 3가지 알고리즘을 학습한다고 생각하면 되겠습니다.
- 이코테 책을 준비합니다
- github repo 를 fork합니다
- 첫주차 Pull Request를 보냅니다
- 학습시작과 동시에 PR을 보냅니다. 학습을 하면서 commit & push한 내용이 모두 PR에 자동으로 추가됩니다. 따라서 학습 진행상황을 다른 스터디원과 실시간으로 공유할 수 있습니다.
- upstream repository의 각자의 브랜치에 Pull Request를 보냅니다(예시)
- 매주 해당 알고리즘의 이론(이코테 PART 02)을 학습합니다
- 모든 예제/실전문제를 모두 풉니다.
- 매주 해당 알고리즘의 실전 문제(이코테 PART 03)를 풉니다
- 반드시 모든 문제를 풀 필요는 없습니다.
- BOJ, programmers 등 이코테 PART 03이 아닌 다른 문제를 풀어도 상관없습니다.
- 알고리즘 이론 정리, 자신만의 알고리즘 접근법/풀이법 정리, JS에 없는 자료구조 사용법, 이코테 예제/실전문제의 JS 풀이 등을 github, 개인 블로그, notion 등 공개할 수 있는 곳에 정리합니다.
- 자신이 정리한 내용을 다른 스터디원이 자신의 PR에서 열람할 수 있도록 합니다.(예시)
- 예시에서는 github 를 사용하였으나, 개인 블로그, notion 등 자유롭게 하셔도 상관없습니다.
- 다른 스터디원의 내용을 보면서 더 많은 인사이트를 얻을 수 있습니다.
- 회고 시간에 서로의 PR을 리뷰하는 시간이 있으니, 자율적으로 수행합니다.
-
디스코드에 질문을 남겨도 좋고, PR에 comment를 남겨도 좋습니다.
-
PR에 comment를 남기더라도 디스코드에서 한번더 말씀해주시면 더 빨리 답변 드릴수 있습니다.
-
다른 스터디원의 질문에 답변합니다.
- 질문에 답변하는 것은 최고의 학습 방법 중 하나입니다.
- 회고는 매주 일요일 22:00 디스코드에서 진행합니다.
- 2인이 1조가 되어 서로의 PR을 리뷰합니다.
- 페어는 매번 참석한 인원중에서 랜덤으로 정해집니다. 즉, 매주 페어가 변경됩니다.
- PR 리뷰란 상대방이 정리한 이론 내용을 보면서 모르는 걸 물어보거나 자신의 아이디어 공유, 공통으로 푼 문제 접근방법에 대한 논의 등을 총칭합니다.
- PR을 리뷰하며 다른 스터디원의 정리한 내용에 대해 질문, 의견 공유, 피드백합니다.
- 다같이 한 주 스터디하면서 느꼈던 점에 대하여 회고합니다. 스터디 방식에 대해 제안할 점이 있으면 의견을 남기고 제안합니다.
- github discussion을 이용합니다.
-
답변 1. 파이썬 자체가 굉장히 읽기가 편하고, 함수명이 직관적이라고 생각합니다. 그래서 이코테 책에 있는 파이썬 기본 문법과 파이썬 기본 문법에 대한 동빈나 강의 만 듣는다면, 이코테 책에 있는 파이썬 코드 읽기에 크게 문제는 없다고 생각합니다. 또한, 이코테 책에서 파이썬 코드 중간중간에 주석이 있어서 흐름 파악하는 것이 어렵지 않습니다.
-
답변 2. 저희 스터디 목표가 파이썬 코드를 이해해서 JS로 다시 써본다가 아니기 때문에, 파이썬 코드를 전혀 참고하지 않고, 그냥 자기 나름대로 JS로 풀어보는 것도 좋다고 생각합니다. 알고리즘 학습은 어떻게 접근하는지가 80% 이상이라고 생각합니다. 알고리즘 접근법은 언어와 상관없이 동일합니다. 다만 언어에 따라서 알고리즘 구현의 난이도가 달라질 뿐입니다. 이코테 책과 강의를 그냥 알고리즘을 어떻게 접근하면 좋을지에 대한 가이드로만 생각하는 것도 괜찮은 것 같습니다.
-
결론: 서점에 가셔서 책 한번 보시고 결정하시는 것도 좋을거 같아요 👍
- 이코테 책에 있는 풀이와 반드시 동일하게 문제를 풀 필요는 없습니다. 자신만의 풀이법을 만들어 가는 것이 이번 스터디의 목표입니다. 다른 스터디원과의 의견 공유로 자신만의 풀이법을 더욱 견고히 만들어갑시다.