5기를 시작하며, 알고리즘 스터디를 모집하였다. 현재 내가 속한 알고리즘 스터디는 잔류인원 4명 중 3명이 취뽀 (1명은 재직중)에 성공 하는 완전 좋은 성과를 걷었다! 해당 팀원들 모두 만족도가 높은 스터디 였다. 특히 나의 경우, 알고리즘을 제대로 해보지 않았던 상태 + 처음 해보는 python으로 시작해서 실력이 영 꽝이었는데, python + 알고리즘 = 취뽀!! 🐰🐰🐰 를 잡는 계기가 되었다.

효과적인 알고리즘 스터디를 원하는 사람들에게 도움이 되길 바라며 포스팅 시작! (다들 기 받아가세욧 🔥)

getting started

스터디방식

세줄 요약을 하자면 아래와 같다.

# algorithm study rule 
- 프로그래머스 인기 유형 개념 공부 + 간단한 문제를 풀이 > 코드리뷰 
- 개념 스터디 ( 6)
- 프로그래머스 단계별 알고리즘 문제 스터디 (4)

개념 스터디 (6주)

개념 유형 정리는 프로그래머스 코딩 고득점 KIT 로 공부하였다.

프로그래머스 기본 문제

프로그래머스는 코딩테스트에서 자주 나오는 12개의 유형을 제공해준다. 한 주에 2명이 각 하나의 유형에 대한 발표를 하고, 관련 유형 2문제(https://leetcode.com/) 총 4문제를 코드 리뷰를 하는 방식으로 진행하였다.

좋았던 점

  • 개념 발표 후 피드백 형식을 진행하다보니, 처음 하는 사람들은 개념을 익히고, 개념을 아는 사람들은 다시 복습하는 형태가 되었다. 알고리즘 실력의 편차에 상관없이 다들 만족!
  • 개념 발표 자료를 github repo에 정리했다. 이 자료는 취업 인터뷰 준비할 때 정말 귀한 자료가 되었다..! 최고
  • 유형 별로 문제를 풀다보니, 다른 문제를 풀 때 어떻게 접근해야 될 지에 대한 감 이 생겼다.

아쉬웠던 점

  • 유형별로 문제를 접해서 감이 오는 장점이 있지만, 시야가 제한되는 단점 이 있었다. 다른 방식으로 풀 수있는데 stack 으로만 생각을 하게 되서 번뜩이는 아이디어를 놓치는 것 같다는게 아쉬웠다.
  • leetcode.com 의 easy 문제를 풀었었는데, 생각보다 많이 쉬웠다. 쉽다보니 팀원들 코드가 비슷해서 코드 리뷰를 할게 딱히 없을 정도.. 프로그래머스 Lv1 으로 접근하는게 좋았을 듯.
  • 원래 각자 아무나 지정해서 왜 이렇게 풀었는지 코드리뷰를 하는 룰이 있었는데, 잘 진행이 되지 않았다..

특징

알고리즘 스터디에서 몇가지 특징 중 개인적으로 좋았던 것들을 정리해 보았다.

git pull request ⭐️⭐️⭐️⭐️⭐️

pul request 를 통해 코드 리뷰를 진행했는데,

pull request 1

궁금한 점에 대해 질문을 코드라인에 남기거나

pull request 2

잘한 내용에 대해 칭찬을 하는 방식으로! 다양하게 사용했다. 다른사람의 코드리뷰를 해주면서, 내 코드와 비교하며 이렇게 짤 수도 있구나! 하고 많이 알았던 게 개발 실력을 향상시켰던 것 같다.

all of python ⭐️⭐️⭐️

모든 스터디 팀원이 python 을 사용하는 스터디였다. 나의 경우, python 을 처음 시작해보는 상황에서, 다른 사람들의 코드를 보며 몰랐던 라이브러리 (pytest, couter, collection..) 들을 알게 되어 정말정말정말 X 100 좋았다.

벌금 제도

신박한 벌금 제도. 벌금 제도가 개발자 답게 피보나치 수열이었다 ㅋㅋㅋㅋㅋㅋㅋ

시간 복잡도 체크하기

한 팀원이 시간 복잡도를 항상 물어는데, 덕분에 자연스럽게 시간복잡도를 생각하고 코드를 짜는 습관이 들었다.

TMI 회고 🔥

코드 리뷰를 하면서, 스터디 새로 알게 된 사실을 말하는 순간들이 있었다. 이런 내용들을 꼭 메모해서 [회고] 에 적어놨다.

readme.md 1

요런 깨알 꿀팁에서부터

readme.md 2

이런 effective python 관련 내용까지! 모든 기록을 남기긴 어려웠지만, 최대한 남기려고 노력했다.

문제풀이 스터디 (총 4주)

문제풀이 스터디는 개념 발표가 끝났기 때문에, 각 팀원들이 Python 에 관련한 알뜰신잡 내용을 공유했다. 개념 스터디 때, 만나서 자신의 코드를 리뷰하는 부분이 루즈했기 때문에, 관련된 질문과 내용은 온라인으로 대체해버렸다.

방식

- 1주차 (LV1) 7문제,
- 2주차 (LV2) 5문제,
- 3주차 (LV3) 3문제,
- 4주차 (LV4,5) 2문제로 진행한다.

- 프로그래머스 단계별 문제 풀이. 개별 문제는 상세하게 풀이 내용 정리해서 말해주기

문제 설명해주기

프로그래머스는 LV1도 약간 어려운..? 까다로운..? 문제들이 많았다. 각자 어떻게 접근했는지 들을 때 더 꿀잼! 특히 멀쩡한 사각형 이라는 문제가 있었는데 4명 다 접근 방법이 다~ 달랐다. 제일 재밌던 순간이었다.

개별문제는

개별문제 정리2

개별문제 정리2

문서화해서, 다른 팀원들이 코드리뷰할 때 알아볼 수 있도록 정리했다. 나의경우 새로 알게 된 점, 고려한 점을 명확히 작성하는데 집중했는데, 개인적으로 코딩 테스트 문제 내용 정리할 때 도움이 되었다.

python 알뜰신잡

- python 관련 작지만 은근 중요한 TMI 알려주기 
- 새로 배운 라이브러리 공유

개념 발표 대체로, 공부하면서 생기는 궁금증에 대해 알려주는 시간을 가졌다. 진짜 대박인게, 나는 1주차에 python 에서는 어떤 알고리즘으로 sorting 을 할까?(TIM SORT=insert + merge) 에 대해 준비했었다. 취업 인터뷰에서 면접관님이 quick/merge 개념을 물어보시고, python 은 quick을 쓸까요? merge를 쓸까요? 라는 질문을 했다. 알고있던 내용이기 때문에 명확히 대답을 했다. 알고리즘 알뜰신잡이 빛을 발한 순간이었다!

마무리

이렇게 해서 현재 스터디는 4주차를 + 추가 연장(1~2주)로 마무리 스터디를 진행중이다. 다음 기수에도 쭉 이어질지는 모르겠지만, 10주간 이 뿐 아니라, tdd, clean code 등등 다양한 분야에 대해 공부하던 계기가 되어 좋았고, 다들 좋은 성과를 가지게 되어 즐거웠던 스터디였다!

관련 내용은 👉 https://github.com/soomtopia/algorithm-study

그럼 다들 도움이 되었길 바라면서! 글을 줄입니다..! 감사합니다!

soom's profile image

soom

2020-02-19

Read more posts by this author