Skip to content

TheCopiens/algorithm-study

 
 

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

📙 algorithm-study

알고리즘 문제 사이트

알고리즘 공부 간증글

알고리즘 공부 방법

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

  • 구현력

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

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

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

알고리즘 스킬을 늘리기위한 공부 순서

  1. 알고리즘 관련 이론을 공부해 이해한다.
  1. 이론과 관련된 알고리즘 문제를 푼다.
  • ex) 해쉬를 이용하는 문제, 배열을 이용하는 문제
  • 문제의 레벨이나 자신의 눈높이에 맞추어 적당한 시간을 정해놓고 푼다.
  • 난이도에 따라 60분~120분이 적당하다. (2시간 이상 넘기지 않는다)
  • 시간을 점점 단축시키는 방향으로 공부해야 실전에 대비할 수 있다.
  1. 이해하기 어려운 문제는 질문하거나 풀이를 본다.
  • 주어진 문제를 풀다가 어디에서 막혔는지 혹은 자신이 무엇을 모르고 있는지 명확히 알아야 해법이 가능하다.
  • 관련된 이론 참고하기, 정답 소스 보기, 다른 사람들 풀이 보기
  • 이해하기 힘든건 주위 사람들 혹은 깃허브에 issue를 등록하거나 pull request를 날려서 질문하자
  • 쉬운것같은 문제도 괜찮으니 망설이지 말고 질문하자. 지혜를 모으면 더 좋은 솔루션을 발견.
  1. 알고리즘을 이해하고 다시 푼다.
  • 피드백을 적용해서 코드를 수정한다.
  • 상대방에게 받은 피드백과 코드에 자신이 적용한 해결방법을 정리해서 README.md에 작성하고 source/해당 코드가 있는 폴더에 업로드한다.
  • 코드에 주석을 달면 시간이 지나고 다시 볼 때 빠른 이해에 도움이 된다.

* 이외에 자신만의 공부법이 있다면 자유롭게 이용

팀원 스터디 진행 방법

온라인 스터디

  1. 한달동안 주간계획/ 목표치 설정
    • 주간계획은 팀공동문제 + 개인목표
    • ex) 카카오2017~2020,삼성A테스트 풀기
    • ex) 퀵소트,버블소트 이론 정리하기, 관련문제 풀기 등등
    • ex) 한달동안 알고리즘 100문제 풀기
  2. 설정한 목표치를 프로젝트보드에 업로드
  3. 일주일동안 주간계획 실행
    • 팀 공동문제는 반드시 풀고 깃허브 업로드
    • 개인 문제는 필요시 선택적 업로드
    • 업로드시 마크다운 작성 or source code
    • 이론공부 필요시 contents폴더에 업로드/ 문제풀이는 source폴더 하위에 개인폴더 생성해 업로드
    • hasing이론
  4. 모든 질문은 issue,pull request, 카톡 에서 진행

미팅 스터디

  1. 주 1회 스터디룸이나 카페에서 만나 약 2~3시간 진행한다.
  2. 팀원들에게 자신이 공부한 이론이나 직접 푼 문제를 설명한다.
    • 이때 팀원들의 도움 혹은 피드백이 필요하다면 정리해서 미리 issue 혹은 Pull Request를 날린 후 단톡에 언급
    • 팀원들은 반드시 미팅 전까지 질문 내용과 답변 숙지하기.
  3. 미팅이 끝나고 각자 위의 4번, 알고리즘을 이해하고 다시 푼다 를 진행한다.

Git 저장소 이용하는 방법

이용 저장소

폴더 설명

  • contents: 알고리즘 관련 이론을 정리해서 업로드하는 폴더
  • docs: 이론 이외의 문서를 업로드하는 폴더
  • source: 개인 폴더를 생성하고 알고리즘 source code를 업로드하는 폴더

GitBash 명령어 사용 방법

작업폴더 변경 후 원격저장소에 반영하기

local workspace에 'ohhako'라는 이름으로 banch를 만들었다.
git branch ohhako

workspace에서 개인 작업을 마친 후 공동 저장소(TheCopiens/algorithm-study)에 반영한다.

  1. git checkout ohhako - master에서 ohhako 브랜치로 전환
  2. workspace에서 작업
  3. git commit -m "message" , git push origin ohhako
  4. git checkout master - ohhako에서 master로 브랜치 전환
  5. git pull - git원격 저장소의 master를 로컬로 가져오기
  6. git merge ohhako - master에 ohhako의 브랜치작업 반영
  7. git push origin master



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

About

📙 Algorithm study

Topics

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Contributors 9