알고리즘이란?
알고리즘은 어떠한 문제를 해결하기 위한 일련의 절차를 공식화한 형태로 표현한 것이다. 예를 들어 일상 속에서는 다음과 같은 알고리즘을 찾을 수 있다.
- 집에서 학교 가는 길 찾기
- 음식을 만드는 방법
- 매장에 가서 물건을 구매는 방법
최단거리 혹은 최단 시간 내에 학교에 가는 길을 찾는 것, 음식을 만들기 위한 재료를 준비하고 조리 순서를 진행하는 것, 매장에서 물건을 집고 계산하는 것까지 모두 알고리즘이라고 할 수 있다.
프로그래밍에서의 알고리즘은 input값을 통해 output값을 얻기 위한 계산 과정을 의미한다. 이러한 문제를 해결할 때, 정확하고 효율적으로 결과값을 얻기 위해서 알고리즘이 필요하다.
알고리즘의 조건
좋은 알고리즘을 만들기 위해서는 다음과 같은 조건을 충족시켜야 한다.
- 입력 : 외부에서 제공되는 자료가 0개 이상 존재한다.
- 출력 : 적어도 2개 이상의 서로 다른 결과를 내어야 한다.
- 명확성 : 수행 과정은 명확하고 모호하지 않은 명령어로 구성되어야 한다.
- 유한성 : 유한 번의 명령어를 수행 후 유한 시간 내 종료해야 한다.
- 효율성 : 모든 과정은 명백하게 실행가능한 것이어야 한다.
공부 순서
알고리즘에 대한 기본 개념 이해
기본 알고리즘 코드 학습
- 시간복잡도
- 자료구조
- 정렬
[문제 풀기]
시간복잡도
문제를 해결하는데 걸리는 시간과 입력의 함수 관계. 프로그램을 작성할 때에 입력의 크기에 따라서 프로그램이 계산하는 횟수가 크게 달라진다. 입력된 자료의 양과 알고리즘 실행에 걸리는 시간 사이에는 어느 정도의 관계가 있다. 이것을 시간복잡도라고 한다.
시간복잡도를 나타낼 때에는 Big O 표기법을 이용한다. 예를 들어서, 1부터 n까지의 합을 구한다고 할 때, 다음과 같은 두 가지 방법이 있다.
[작성 중]
참고사이트
[Algorithm] 알고리즘 공부 시작 방법 및 순서
초보자 입장에서 알고리즘 공부를 시작하고 싶어서 뭐부터 해야 좋을지 조사하다가, 자료가 좀 모여서 포스트를 작성하게 됐다. 완전 심도 있게 학습한다기보단 공부할 것 체크리스트 정도가
blog.yena.io
'Coding Test > Algorithm' 카테고리의 다른 글
[Algorithm] 그리디 알고리즘(Greedy Algorithm) (0) | 2022.01.22 |
---|---|
[Algorithm] 다익스트라 알고리즘 (0) | 2022.01.22 |
[Algorithm] 동적 계획법(Dynamic Programming) (0) | 2022.01.22 |