본문 바로가기

Coding Test

(4)
[Algorithm] 그리디 알고리즘(Greedy Algorithm) Greedy Algorithm이란? Greedy 알고리즘이란 동적 프로그래밍 사용 시 지나치게 많은 일을 한다는 것에서 착안하여 고안된 알고리즘이다. 동적 프로그래밍을 대체하는 것은 아니고 같이 쓰이며 서로 보완하는 개념이다. Greedy 알고리즘은 탐욕 알고리즘 또는 욕심쟁이 알고리즘이라고 불리기도 하는데, 미래를 생각하지 않고 각 단계에서 가장 최선의 선택을 하는 기법이다. 이렇게 각 단계에서 최선의 선택을 하는 것이 전체적으로도 최선이길 바라는 알고리즘이다. 물론 모든 경우에서 Greedy 알고리즘이 통하지는 않는다. 당장 최선의 방법을 선택해도 시간이 조금 지난 후에 더 나은 선택지가 있을 수 있기 때문이다. 하지만 Greedy 알고리즘이 통하는 몇몇 케이스가 존재하기 때문에 해당 케이스의 유형을..
[Algorithm] 알고리즘이란 알고리즘이란? 알고리즘은 어떠한 문제를 해결하기 위한 일련의 절차를 공식화한 형태로 표현한 것이다. 예를 들어 일상 속에서는 다음과 같은 알고리즘을 찾을 수 있다. 집에서 학교 가는 길 찾기 음식을 만드는 방법 매장에 가서 물건을 구매는 방법 최단거리 혹은 최단 시간 내에 학교에 가는 길을 찾는 것, 음식을 만들기 위한 재료를 준비하고 조리 순서를 진행하는 것, 매장에서 물건을 집고 계산하는 것까지 모두 알고리즘이라고 할 수 있다. 프로그래밍에서의 알고리즘은 input값을 통해 output값을 얻기 위한 계산 과정을 의미한다. 이러한 문제를 해결할 때, 정확하고 효율적으로 결과값을 얻기 위해서 알고리즘이 필요하다. 알고리즘의 조건 좋은 알고리즘을 만들기 위해서는 다음과 같은 조건을 충족시켜야 한다. 입력..
[Algorithm] 다익스트라 알고리즘
[Algorithm] 동적 계획법(Dynamic Programming) 참조 : https://developer-mac.tistory.com/77 [코딩테스트 대비] 동적 계획법 (DP) 정리 동적 계획법(Dynamic Programming) 정리 큰 문제를 작은 문제로 나눠서 푸는 알고리즘인데, 코딩테스트에서 자주 출제되는 알고리즘 기법입니다. DP 속성 Overlapping Subproblem (부분 문제가 겹친다.) Optimal developer-mac.tistory.com Dynamic Programming이란? 큰 문제를 작은 문제로 나눠서 푸는 알고리즘인데, 코딩테스트에서 자주 출제되는 알고리즘 기법이다. DP 속성 Overlapping Subproblem(부분 문제가 겹친다.) Optimal Substructure(최적 부분 구조) Overlapping Sub..