알고리즘 공부 방법

데이터 여행자·2021년 4월 26일
49

추가 학습

목록 보기
7/7
post-custom-banner

최근 알고리즘을 공부해야겠다는 생각이 부쩍 들었다. 우선은 무엇을 어떻게 공부해야 하는지 알아야 할 것 같아서 자료를 찾아보았다. 앞으로 아래의 내용을 참고하여 꾸준히 공부해보려고 한다.

알고리즘 문제

코드업: 기초 100제
백준 온라인 저지: 삼성
코드포스 - 블루레벨 정도의 실력까지.
탑코더 알고리즘 튜토리얼: 초심자 추천
프로그래머스: 카카오
알고스팟
코딩도장
Hackerearth
Hackerrank

알고리즘 공부 방법

  • 기본 개념/문법 이해하기
  • 기본 알고리즘 코드 학습하기
  • 백준에서 아래의 문제를 50문제씩 풀어보기
    • 그리디 알고리즘 문제
    • 탐색 문제(완전 탐색, BFS, DFS)
    • 기본 동적 프로그래밍
    • 기출문제

고급

  • 그래프이론
  • 중급 및 고급 동적 프로그래밍
  • 문자열

알고리즘 기본 개념

  • 시간 복잡도(중요! 계산해보아야 함)
  • 자료구조: 선형/비선형
  • 정렬

좋은 알고리즘의 조건

  • 입력: 외부에서 제공되는 자료가 0개 이상 존재
  • 출력: 적어도 2개 이상의 서로 다른 결과를 내야 한다.
  • 명확성: 수행과정은 명확하고 모호하지 않은 명령어로 구성된다.
  • 유한성: 유한 번의 명령어를 수행한 후 유한 시간 내에 종료한다.
  • 효율성: 모든 과정은 명백하게 실행가능(검증 가능)한 것이어야 한다.

  • 프로그래밍 대회에서 배우는 알고리즘 문제 해결 전략(종만북)
  • 프로그래밍 콘테스트 챌린징(노란책)
  • Competitive Programming 3 by Steven Halim
  • Introduction to Algorithms(CLRS)

문제 푸는 방법

  1. 시간을 정해놓고, 그 시간을 넘겨도 못 풀면 답을 본다. 처음에는 많은 풀이와 사실을 아는 게 더 중요하다.
  2. 적정 난이도의 문제: USACO 추천
  3. 다른 사람의 코드를 본다. 좋은 코딩법을 배울 수 있고, 코드를 읽고 이해하는 능력을 키울 수 있다.
  4. 풀이를 논리적으로 설명할 수 있을 때 코딩을 한다.

기타

  • 언어는 C++, Python
  • 책을 정독하고 본인의 언어로 개념을 알 때까지 구현한다.
  • 내 말로 설명하자: 글이나 말로 설명한다.
  • 알고리즘은 내 언어로 추상화해서 기억
  • 직접 코드를 짜서 확인해본다. 반복 숙달, 디버깅 능력
  • 문제 유형과 풀이를 세분화한다. (예: DAG에서 최장경로 구하기, 트리의 지름 구하기 등)
post-custom-banner

5개의 댓글

comment-user-thumbnail
2021년 6월 23일

알고리즘 공부 법 잘 보구 가요

답글 달기
comment-user-thumbnail
2022년 5월 13일

잘 보고 갑니다 ㅠㅠ

답글 달기
comment-user-thumbnail
2022년 8월 25일

꼭 필요한 정보에요! 감사합니다. 잘 보고 갑니다~

답글 달기
comment-user-thumbnail
2023년 8월 26일

참고되었습니다. 감사합니다. ^^

답글 달기