Algorithm 200

[알고리즘/Algorithm] 아이디어를 코드로 바꾸는 구현

코딩 테스트에서 어떤 문제를 풀든 코드를 작성하는 과정은 필수기 때문에 구현은 모든 문제 유형을 포함하는 개념이라고 볼 수 있다. Implementation Algorithm 특히 풀이를 떠올리는 것은 쉽지만 소스코드로 옮기기 어려운 문제 를 구현 유형의 문제라고 본다. 알고리즘은 간단한데 코드가 굉장히 길어지는 문제, 문자열을 입력받아 한 문자 단위로 끊어서 리스트에 넣어야 하는 문제 등이 까다로운 구현 유형의 문제라고 할 수 있다. 저자는 이 책에서 완전 탐색과 시뮬레이션 두 개의 유형을 구현으로 묶었다. 완전 탐색 : 모든 경우의 수를 다 계산하는 방법 시뮬레이션 : 문제에서 제시한 알고리즘을 한 단계식 차례대로 수행하는 방법 구현 알고리즘의 대표적인 예시인 상하좌우 문제를 살펴보자. 상하좌우 여행..

[알고리즘/Algorithm] 당장 좋은 것만 선택하는 그리디 알고리즘

그리디 알고리즘은 단어 그대로 번역하여 탐욕 알고리즘으로도 소개된다. 탐욕적이라는 말이 무슨 뜻일까? Greedy Algorithm 그리디 알고리즘에서의 탐욕적이다 라는 말은 현재 상황에서 당장 좋은 것만 고르는 방법을 의미한다. 그래서 어떻게 보면 무식하게 문제를 푸는 방법이라고 볼 수 있다. 단지 매 순간마다 가장 좋아보이는 것을 선택하고, 이 선택이 나중에 어떠한 영향을 미칠지에 대해서는 전혀 고려하지 않는다. 코딩 테스트에서 나오는 그리디 알고리즘 문제들은 타 알고리즘과 비교했을 때 미리 외우고 있지 않아도 풀 수 있을 가능성이 높다고 한다. 하지만 문제 유형이 굉장히 다양하기 때문에 많은 유형을 접하면서 연습을 하는 것이 중요하다. 선택을 위한 기준 매 순간 좋은 것을 선택하기 위해서는 기준이 ..