[Algorithm] 그리디 알고리즘(Greedy Algorithm) & 구현(Implementation)
Updated:
그리디 알고리즘
그리디 알고리즘(탐욕법)은 __현재 상황에서 지금 당장 좋은 것만 고르는 방법__을 의미한다. 일반적인 그리디 알고리즘은 문제를 풀기 위한 최소한의 아이디어를 떠올릴 수 있는 능력을 요구한다.
그리디 해법은 __정당성 분석__이 중요하다.
따라서 단순히 가장 좋아 보이는 것을 반복적으로 선택해도 최적의 해를 구할 수 있는지 __검토__해야한다!
예를 들어, 루트 노드부터 시작하여 거쳐 가는 노드 합을 최대로 만들고 싶다면 최적의 해를 보장할 수 없다.
구현
구현이란, __머릿속에 있는 알고리즘을 소스코드로 바꾸는 과정__이다. 흔히 __풀이를 떠올리는 것은 쉽지만 소스코드로 옮기기 어려운 문제__를 지칭한다.
예를 들면,
- 알고리즘은 간단한데 코드가 지나칠 만큼 길어지는 문제
- 실수 연산을 다루고, 특정 소수점 자리까지 출력해야 하는 문제
- 문자열을 특정한 기준에 따라서 끊어 처리해야 하는 문제
- 적절한 라이브러리를 찾아서 사용해야 하는 문제
일반적으로 알고리즘 문제에서의 2차원 공간은 __행렬(Matrix)__의 의미로 사용된다.
시뮬레이션 및 완전 탐색 문제에서는 2차원 공간에서의 __방향 벡터__가 자주 활용된다.
참고자료
이것이 취업을 위한 코딩테스트다. (나동빈 저)
Leave a comment