알고리즘 시작!

지노·2020년 4월 7일
0

Algorithm

목록 보기
1/2

언어 선택

알고리즘 공부를 시작하기 전에 내가 어떤 언어로 문제를 풀 지 정해야 할 필요가 있다.
내가 알고 있는 언어들을 나열해보면

  • C++ (주로 사용했던 언어)
  • Java
  • Javascript
  • Python (문자열 파싱 문제 자주 사용)

다음에 이유로 Java만을 사용하고 싶었다.
1. 기존에 사용하던 C++과 유사한 언어
2. 알고리즘 뿐 아니라 웹 개발에서도 필요한 자료구조를 같이 공부할 수 있다.
3. 편리하다는 이유만으로 문자 파싱 문제만 Python을 사용하고 싶지 않았다.

알고리즘 필수 개념

  • 시간복잡도/공간 복잡도
  • 자료구조
  • 대표적인 풀이법

시간 복잡도/공간 복잡도

알고리즘 처음 공부를 할 때 시간 복잡도 중심으로 공부를 하다 보니 문제 풀이 과정에서 메모리 문제로 골머리를 썩었던 경험이 있다.
풀이 방법을 선택하기 전에 시간 복잡도는 물론 공간 복잡도가 발생하지 않을지 미리 고려하는 습관이 필요하다고 생각했다.

자료구조

어떤 자료구조로 코드를 구현하냐에 따라서 알고리즘 효율에 차이가 발생할 수 있다. 각 자료구조에 특징과 장단점을 미리 정리해놓을 필요가 있다.

다음 포스트에 자료구조를 정리해보고자 한다.

대표적인 풀이법

  • 완전탐색
  • Greedy
  • BFS/DFS
  • DP
  • 부분합(1차원, 2차원 부분 합)
  • 최단경로 - 다익스트라, 플로이드
  • 최소 스패닝 트리
  • 정수론(유틀리드 호제법, 에라토스테네스의 체)
  • 파라매틱 서치(이분법)
  • 백트랙킹
  • 상호 배타 집합
  • 세그먼트 트리
  • 하노이 탑 등등
profile
Spring Framework를 이용한 웹 개발과 AWS 서비스, Container를 사용한 CI/CD 인프라에 관심이 있습니다.

0개의 댓글