🕖 Time
- Wed 07:00 ~ 10:00 : 온라인으로 모여 2 문제 풀기 + 코드 리뷰
- ~ Sun 24:00 : 이론 정리한 거 올리기
- ~ Wed 06:59 : 프로그래머스 high score kit 문제 + 개별 문제 1문제 (kit 문제 말고 개별문제로 대체 가능)
🚀 Process
-
매주 high score kit 2개씩 진행
-
문제를 풀면서 시간 복잡도, 접근 방식, 새로 알게된 것을 주석으로 적어서 코드를 올림
Example
트리의 지름을 구하기 위해 dfs를 사용하면 될 것 같다고 생각
먼저 dfs를 통해 가장 깊은 노드를 찾은 후 다시 dfs를 해당 노드에서 시작하여 가장 깊은 노드를 구함
시간 복잡도 : O(v+e)
새로 알게된 점 : ~~ -
다른 팀원들이 이해하기 쉽도록 주석을 깔끔하게 달기.
-
코드 리뷰 및 질의는 깃헙을 통해서 한다.
-
스터디의 모멘텀을 위해 스터디 할때는 캠을 키고 한다.
-
이론 정리 이후 김현준이 다른 팀원들의 자료를 정리해서 하나의 파일로 만들기.
-
각 팀원은 src/해당주차 파일에 자기 이름(닉네임 가능)으로 된 파일을 만들고 숙제와 이론 정리한 걸 올린다.(문제이름_자기이름.cpp or .py)
-
코드 리뷰는 랜덤으로 정한 2명의 팀원이 푼 문제를 리뷰한다.(다른 좋은 생각이 있으면 말해주세요!)
-
공통 문제 중 어려웠던 문제를 투표로 통해 2문제 정한 후 수요일에 리뷰하기.
지각 및 결석
- 지정 된 시간(파일 올리기, 숙제, 모여서 문제 풀기 다 포함)에 지각할 경우 피보나치 수열로 지각비를 걷음
- 1000원에서 시작해서 1000, 1000, 2000, 3000, 5000 이런 순으로 걷을 예정
- 결석의 경우 한번은 가능하고 이후 지각비로 계산된다.
- 1주차 : 해시, 스택/큐
- 실전 문제(2)
- 개별 문제
- 김현준 : 추석 트래픽 (https://programmers.co.kr/learn/courses/30/lessons/17676)
- 김지일 : 요세푸스 (https://www.acmicpc.net/problem/1158)
- 송유진 : 124나라의 숫자 (https://programmers.co.kr/learn/courses/30/lessons/12899)
- 벌금
- 윤지윤 (이론 지각 1000, 문제 지각 1000), 김성현 (문제 지각 1000)
- 2주차 : 힙, 정렬
- 실전 문제(2)
- 신입사원 : https://www.acmicpc.net/problem/1946
- 카드 정렬하기 : https://www.acmicpc.net/problem/1715
- 개별 문제
- 김지일 : 좌표 압축 (https://www.acmicpc.net/problem/18870)
- 송유진 : 숫자 문자열과 영단어 (https://programmers.co.kr/learn/courses/30/lessons/81301)
- 벌금
- 김현준 (문제 지각 1000), 윤지윤 (문제 지각 2000), 김성현 (문제 지각 1000, 이론 지각 2000)
- 3주차 : brute-force, greedy algorithm
- 실전 문제(2)
- 신입사원 : https://www.acmicpc.net/problem/1946
- 카드 정렬하기 : https://www.acmicpc.net/problem/1715
- 개별 문제
- 김현준 : 수리공 환승 (https://www.acmicpc.net/problem/1449)
- 송유진 : 신규아이디추천 (https://programmers.co.kr/learn/courses/30/lessons/72410)
- 김성현 : 토마토 (https://www.acmicpc.net/problem/7576)
- 벌금
- 김지일(문제 지각 1000, 결석권 사용), 김현준(이론 지각 1000), 송유진(결석권 사용), 윤지윤(문제 지각 3000)
- 4주차 : dynamic programming, DFS/BFS
- 실전 문제(2)
- 개별 문제
- 김성현 : 촌수관리 (https://www.acmicpc.net/problem/2644)
- 벌금
- 김지일(문제 지각 1000), 김현준(문제 지각 2000), 송유진(결석 1000, 문제 지각 1000), 윤지윤(문제 지각 5000)
책
- 알고리즘 문제 해결 전략 : 클래식한 알고리즘 추천 책
- 알고리즘 프레이닝 : cpp 위주로 설명이 되어 있으며 위 문제 해결 전략 책보다 얇아서 입문으로 괜찮은 책
- 이것이 취업을 위한 코딩 테스트다 : 파이썬 위주로 설명이 되어 있고 입문으로 괜찮은 책
시간 복잡도별 명령 수
보통 컴퓨터는 10^8개의 연산을 1초에 수행할 수 있다. n을 데이터의 크기라고 생각하고 어림잡아 계산하면 아래처럼 생각할 수 있다.
- n <= 100,000,000 : O(n)
- n <= 1,000,000 : O(nlogn)
- n <= 10,000 : O(n^2)
- n <= 500 : O(n^3)
- n <= 20 : n! and 2^n
git push 안 엉키게 하는 법
깃이 처음이시면 source tree프로그램을 사용해 보세요
push 하시기 전에 다른 사람들이 올린 commit들을 자기 컴퓨터에 업데이트를 해야합니다.
이를 위해서는 터미널에서 명령어를 쓰시면 아래 처럼 따라하시면 됩니다.
git fetch (origin master)
git pull (origin master)
//pull을 통해 자신의 컴퓨터로 커밋을 끌고 옵니다.
//이후 별 문제가 없다면 push를 사용하시면 됩니다.
git push (origin master)