Skip to content

kwonja/CBNU-algorithm-studying

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

CBNU-algorithm-studying

스터디 기간

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

진도

진도표

알고리즘 공부 방법

먼저 본인에게 부족한 스킬이 무엇인지 파악하기
  • 구현력

    • 본인이 생각한 알고리즘을 그대로 소스코드로 구현하는 능력.
    • 프로그램 순서도, 사용할 변수나 함수의 데이터 타입 등을 올바르게 정하는 과정.
    • 이 스킬을 향상시키려면 어떤 프로그램을 만들고자 하는지를 명확히 해야한다.
    • 무엇을 입력받아 어디에 저장하고 어떤 과정을 거쳐 중간 결과로 무엇을 얻고 최종적으로 어떤 결과물을 출력하는지 순서도를 적은 후 데이터 타입 또는 자료구조에 저장할지 생각하는 연습을 하자.
  • 문제해결능력

    • 알고있는 알고리즘, 자료구조, 테크닉을 당면한 문제에 맞게 변형 적용하는 것
    • 문제를 창의적인 시각에서 접근해 해결하는 능력이 필요
    • 중위권에서 상위권으로 갈 때 발목잡는 스킬
    • 이 능력이 부족하면 어떻게 접근해야 할지, 막상 솔루션은 내가 아는 알고리즘,자료구조 인 상황이 연출된다
    • 이 스킬을 향상시키려면 양질의 문제를 풀기, 이전에 본인이 접근한 다양한 방법을 잘 정리 해두는 것이 좋다
  • 배경지식

    • 기초적인 프로그래밍 문법, 알고리즘, 자료구조, 선형대수나 확률 등 기본적인 수학적 지식 (가끔 하드웨어, OS 지식)
    • 이 능력이 부족하면 솔루션을 열었을때 외계어를 마주하게 된다.
  • 정해진 시간내에 문제풀때 문제 이해시간/풀이 생각시간/코딩시간/디버깅시간을 기록하며 어떤 부분이 구체적으로 부족한지 인지해서 부족한 부분에 더 노력을 들이기로

알고리즘 문제 선정

  • 백준이나 프로그래머스 중 본인이 편한 사이트 선택
  • 백준
  • 프로그래머스
    • 본인 레벨에 맞는 문제 선정

알고리즘 스터디 방식

Details

매주 일요일 10시에 진행

  1. 매주 한문제씩 주어진다.
  2. 공통 문제를 2시간이 넘지 않도록 문제를 푼다.(몇개의 문제를 풀던간에 일주일에 2시간만 투자하는 의미)
  3. 못풀겠는 문제의 경우, 검색을 통해 코드를 본다. 코드를 봐도 이해가 안되는경우, 포기한다.(너무 붙잡아 두면 시간만 잡아먹는다)
  4. 자신이 풀었던 문제를 동아리원에게 설명(사용 알고리즘을 대략적으로 설명)
  5. 질문이 있다면 다같이 해결해 보려고 노력(여러 견해를 알수 있음) 하나의 알고리즘을 푸는 많은 방법에 대해서 아는것은 도움이 많이된다.
  6. 자신이 푼 문제를 PR한다.
  7. 본인이 더 풀고 싶다면 더 풀어서 PR한다.

✅ 참여 방법

  1. 이 저장소를 fork 한다.
  2. 생성된 원격 저장소에 자신의 이름으로 폴더를 생성한다.
  3. 생성된 폴더에 자신의 소스코드를 업로드 한다. (폴더명에 콜론":" 안됩니다!)
  4. 이때 commit 규칙을 지키도록한다!
  5. 원본 저장소로 Pull Request를 한다. (일요일에 Merge예정)
  6. 다른 사람들의 PR을 보고 자유롭게 코드리뷰를 한다.(공통문제는 같이할것이니 안해도됨
  7. 주의!! 기존 폴더를 지우면 안됩니다!! 개인 폴더 내부만 수정해주세요 :) (기존 폴더가 수정되면 PR에 충돌이 생길꺼에요!)

✅ commit 규칙

  • commit 메세지: [문제 출처(플랫폼)] 문제이름
  • 터미널에서 작성법:
 git commit -m "[BOJ] Hello World"
  • 플랫폼 작성법 통일:
    • [BOJ] - 백준
    • [PGS] - 프로그래머스

✅ PR 규칙

  • 원본저장소는 master브랜치만 있도록 관리한다.
  • PR 제목: 이름 / 주차 / 몇 문제
  • kwonja / 8월 1주차 / 4문제
  • comment는 자유이나 가능하다면, 이번주에 풀었던 문제의 알고리즘 분류가 어떻게 되는지,
    어떤 문제가 어려웠는지 회고를 작성한다면 개인에게도 도움되고 다른 코드 리뷰어가 참고하기 좋을 것 같습니다 :)

Git 저장소 이용하는 방법

원격저장소 로컬에 가져오기

git clone [fork한 원격저장소주소] .
. 을 안붙이면 algorithm-studying이라는 파일이 생성되면서, 그안에 폴더가 생긴다.(혹시 폴더를 생성해서 그 안에 내용을 넣고싶다면 . 을 붙여라
클론후 생성된 파일에 자기이름 로 파일생성 ->여기에 코드를 넣을꺼임

로컬에서 개인 브랜치 생성하기

local workspace에 'kwonja(예시)' 라는 이름으로 브랜치 생성
git branch kwonja(예시) "권자"라는 브랜치를 생성

clone으로 가져오면 원격 저장소가 알아서 등록이 될것이다.
혹시나 하면 git remote -v 로 확인

로컬에서 브랜치 작업후 원격저장소에 반영하기(중요!)

  1. git checkout kwonja - master에서 kwonja 브랜치로 전환
  2. workspace(워킹트리)에서 작업
  3. git add "파일이름.cpp"
  4. git commit -m "message"
  5. git push origin kwonja - 원격저장소 kwonja 브랜치에 반영
  6. git checkout master - 브랜치 전환 (6번을 진행할때 폴더를 처음만들면, 브랜치가 바뀌면서, 폴더가 사라질것이다. 그런데 경로는 그대로 가지고 있어서 에러가 발생한다.(파일을 찾을수 없다고 뜸)
    cd ..를 통해 뒤로 돌아가면 원래 master 브랜치로 이동
  7. git merge kwonja - 최신화된 master에 kwonja 브랜치 작업 반영
  8. git push origin master - 원격저장소 master에 수정사항 반영
  9. PR규칙에 맞게 PR

fork한 원격저장소 최신화

로컬에서 작업하기전 원본 저장소에 내용이 변경되어있을수 있다.
우리가 작업하는건 cpp파일이라 서로 겹칠일이 없어, 충돌이 일어나진 않겠지만, 한 파일에 대해서 코드를 수정할때는 최신화되어 있지 않은 코드로 사용하게되면 PR과정에서 꼬이게된다.

  1. git remote add upstream 원본저장소URL 원본저장소는 보통 upstream 이라는 이름을 사용
  2. git remote -v -잘 저장되었는지 확인 (1,2번작업은 한번만 해도된다)
  3. git checkout master -원격저장소의 master 브랜치로 이동
  4. git fetch upstream -원본저장소의 내용을 불러옴
  5. git merge upstream/master -원격저장소의 master 브랜치에 merge ->로컬에 최신화 된 데이터를 가져온다. (4,5번은
  6. git push origin master -로컬에 가져온 최신화 데이터를 원격에 푸시



이 글은 아래 사이트를 참고해 작성되었습니다.

About

2022년 1학기 (온라인) 학습동아리

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Contributors 8