2022년 3월 2일 ~ 2022년 8월31일
출석표
| 이름 | 1주차 | 2주차 | 3주차 | 4주차 | 5주차 | 6주차 | 7주차 | 8주차 | 9주차 |
|---|---|---|---|---|---|---|---|---|---|
| 권성민 | O | O | O | x | O | O | O | O | O |
| 정종현 | O | O | x | O | O | O | O | O | O |
| 정재민 | O | O | O | O | O | O | O | O | O |
| 노민성 | O | O | O | O | O | O | O | O | O |
| 임상우 | O | O | O | O | O | O | O | O | O |
| 주시원 | x | O | x | x | O | O | O | O | x |
| 김정현 | x | O | O | O | O | O | O | x | O |
| 이인규 | O | O | O | O | O | O | O | O | O |
| 이름 | 10주차 | 11주차 | 12주차 | 13주차 | 14주차 | 15주차 | 16주차 | 17주차 | 18주차 |
|---|---|---|---|---|---|---|---|---|---|
| 권성민 | O | O | x | O | O | O | O | O | O |
| 정종현 | O | O | O | O | O | O | O | O | O |
| 정재민 | O | O | O | O | O | O | O | O | O |
| 노민성 | O | O | O | O | O | O | O | O | O |
| 임상우 | O | O | O | O | O | O | O | O | O |
| 주시원 | x | O | x | O | O | O | O | x | O |
| 김정현 | O | O | O | O | O | O | O | O | O |
| 이인규 | O | O | O | O | O | O | O | O | O |
| 이름 | 19주차 | 20주차 | 21주차 | 22주차 | 23주차 | 24주차 | 25주차 | 26주차 |
|---|---|---|---|---|---|---|---|---|
| 권성민 | O | O | O | O | O | O | O | O |
| 정종현 | O | O | O | O | O | O | O | O |
| 정재민 | x | O | O | O | O | O | O | O |
| 노민성 | O | O | O | O | O | O | O | O |
| 임상우 | x | O | O | O | O | O | O | O |
| 주시원 | O | x | O | O | O | O | O | O |
| 김정현 | O | O | x | O | O | O | O | O |
| 이인규 | O | O | O | O | O | O | O | O |
진도표
- 1주차
- 계획수립
- 프로그래머스 스택/큐 프린터 https://programmers.co.kr/learn/courses/30/lessons/42587
- 2주차 재귀
- 1, 2, 3 더하기 https://www.acmicpc.net/problem/9095
- 1로 만들기 https://www.acmicpc.net/problem/1463
- 부분수열의 합 https://www.acmicpc.net/problem/1182
- 하노이 탑 이동 순서 https://www.acmicpc.net/problem/11729
- 암호 만들기 https://www.acmicpc.net/problem/1759
- 3주차 그리디알고리즘
- 4주차 연결리스트
- 5주차 그래프
- 6주차 중간고사대비
- 7주차 중간고사대비
- 8주차 중간고사대비
- 9주차 완전탐색
- 10주차 이진탐색
- 11주차 DP
- 가장 긴 감소하는 부분 순열https://www.acmicpc.net/problem/11722
- 12주차 최대 힙
- 13주차 프로그래머스-카카오블라인드채용
- 14주차 기말고사대비
- 15주차 기말고사대비
- 16주차 프로그래머스
- 17주차 프로그래머스
- 18주차 삼성기출문제
- 19주차 프로그래머스
- 20주차 삼성기출문제
- 21주차 삼성기출문제
- 22주차 프로그래머스
- 23주차 프로그래머스
- 24주차 프로그래머스
- 25주차 프로그래머스
- 26주차 프로그래머스
먼저 본인에게 부족한 스킬이 무엇인지 파악하기
-
구현력
- 본인이 생각한 알고리즘을 그대로 소스코드로 구현하는 능력.
- 프로그램 순서도, 사용할 변수나 함수의 데이터 타입 등을 올바르게 정하는 과정.
- 이 스킬을 향상시키려면 어떤 프로그램을 만들고자 하는지를 명확히 해야한다.
- 무엇을 입력받아 어디에 저장하고 어떤 과정을 거쳐 중간 결과로 무엇을 얻고 최종적으로 어떤 결과물을 출력하는지 순서도를 적은 후 데이터 타입 또는 자료구조에 저장할지 생각하는 연습을 하자.
-
문제해결능력
- 알고있는 알고리즘, 자료구조, 테크닉을 당면한 문제에 맞게 변형 적용하는 것
- 문제를 창의적인 시각에서 접근해 해결하는 능력이 필요
- 중위권에서 상위권으로 갈 때 발목잡는 스킬
- 이 능력이 부족하면 어떻게 접근해야 할지, 막상 솔루션은 내가 아는 알고리즘,자료구조 인 상황이 연출된다
- 이 스킬을 향상시키려면 양질의 문제를 풀기, 이전에 본인이 접근한 다양한 방법을 잘 정리 해두는 것이 좋다
-
배경지식
- 기초적인 프로그래밍 문법, 알고리즘, 자료구조, 선형대수나 확률 등 기본적인 수학적 지식 (가끔 하드웨어, OS 지식)
- 이 능력이 부족하면 솔루션을 열었을때 외계어를 마주하게 된다.
-
정해진 시간내에 문제풀때 문제 이해시간/풀이 생각시간/코딩시간/디버깅시간을 기록하며 어떤 부분이 구체적으로 부족한지 인지해서 부족한 부분에 더 노력을 들이기로
- 백준이나 프로그래머스 중 본인이 편한 사이트 선택
- 백준
- 백준사이트에 강의 부분이 있는데, 거기에 있는 알고리즘 종합 세트에 있는 문제를 따라간다.
- 위 문제를 다 풀면 알고리즘 문제해결전략 을 풀 예정이다.
참고 사이트 : https://gmlwjd9405.github.io/2018/05/14/how-to-study-algorithms.html
- 프로그래머스
- 본인 레벨에 맞는 문제 선정
Details
매주 일요일 10시에 진행
- 매주 한문제씩 주어진다.
- 공통 문제를 2시간이 넘지 않도록 문제를 푼다.(몇개의 문제를 풀던간에 일주일에 2시간만 투자하는 의미)
- 못풀겠는 문제의 경우, 검색을 통해 코드를 본다. 코드를 봐도 이해가 안되는경우, 포기한다.(너무 붙잡아 두면 시간만 잡아먹는다)
- 자신이 풀었던 문제를 동아리원에게 설명(사용 알고리즘을 대략적으로 설명)
- 질문이 있다면 다같이 해결해 보려고 노력(여러 견해를 알수 있음) 하나의 알고리즘을 푸는 많은 방법에 대해서 아는것은 도움이 많이된다.
- 자신이 푼 문제를 PR한다.
- 본인이 더 풀고 싶다면 더 풀어서 PR한다.
- 이 저장소를
fork한다. - 생성된 원격 저장소에 자신의 이름으로 폴더를 생성한다.
- 생성된 폴더에 자신의 소스코드를 업로드 한다. (폴더명에 콜론":" 안됩니다!)
- 이때
commit 규칙을 지키도록한다! - 원본 저장소로
Pull Request를 한다. (일요일에 Merge예정) - 다른 사람들의 PR을 보고 자유롭게 코드리뷰를 한다.(공통문제는 같이할것이니 안해도됨
- 주의!! 기존 폴더를 지우면 안됩니다!! 개인 폴더 내부만 수정해주세요 :) (기존 폴더가 수정되면 PR에 충돌이 생길꺼에요!)
- commit 메세지: [문제 출처(플랫폼)] 문제이름
- 터미널에서 작성법:
git commit -m "[BOJ] Hello World"
- 플랫폼 작성법 통일:
- [BOJ] - 백준
- [PGS] - 프로그래머스
- 원본저장소는
master브랜치만 있도록 관리한다. - PR 제목: 이름 / 주차 / 몇 문제
kwonja / 8월 1주차 / 4문제- comment는 자유이나 가능하다면, 이번주에 풀었던 문제의 알고리즘 분류가 어떻게 되는지,
어떤 문제가 어려웠는지 회고를 작성한다면 개인에게도 도움되고 다른 코드 리뷰어가 참고하기 좋을 것 같습니다 :)
git clone [fork한 원격저장소주소] .
. 을 안붙이면 algorithm-studying이라는 파일이 생성되면서, 그안에 폴더가 생긴다.(혹시 폴더를 생성해서 그 안에 내용을 넣고싶다면 . 을 붙여라
클론후 생성된 파일에 자기이름 로 파일생성 ->여기에 코드를 넣을꺼임
local workspace에 'kwonja(예시)' 라는 이름으로 브랜치 생성
git branch kwonja(예시) "권자"라는 브랜치를 생성
clone으로 가져오면 원격 저장소가 알아서 등록이 될것이다.
혹시나 하면 git remote -v 로 확인
git checkout kwonja- master에서 kwonja 브랜치로 전환- workspace(워킹트리)에서 작업
git add "파일이름.cpp"git commit -m "message"git push origin kwonja- 원격저장소 kwonja 브랜치에 반영git checkout master- 브랜치 전환 (6번을 진행할때 폴더를 처음만들면, 브랜치가 바뀌면서, 폴더가 사라질것이다. 그런데 경로는 그대로 가지고 있어서 에러가 발생한다.(파일을 찾을수 없다고 뜸)
cd ..를 통해 뒤로 돌아가면 원래 master 브랜치로 이동git merge kwonja- 최신화된 master에 kwonja 브랜치 작업 반영git push origin master- 원격저장소 master에 수정사항 반영- PR규칙에 맞게 PR
로컬에서 작업하기전 원본 저장소에 내용이 변경되어있을수 있다.
우리가 작업하는건 cpp파일이라 서로 겹칠일이 없어, 충돌이 일어나진 않겠지만, 한 파일에 대해서 코드를 수정할때는 최신화되어 있지 않은 코드로 사용하게되면 PR과정에서 꼬이게된다.
git remote add upstream 원본저장소URL원본저장소는 보통 upstream 이라는 이름을 사용git remote -v-잘 저장되었는지 확인 (1,2번작업은 한번만 해도된다)git checkout master-원격저장소의 master 브랜치로 이동git fetch upstream-원본저장소의 내용을 불러옴git merge upstream/master-원격저장소의 master 브랜치에 merge ->로컬에 최신화 된 데이터를 가져온다. (4,5번은git push origin master-로컬에 가져온 최신화 데이터를 원격에 푸시