본문 바로가기

Algorithm/그리디

[이것이 코딩 테스트다] 큰 수의 법칙 다양한 수로 이루어진 배열이 있을 때 주어진 수들을 M번을 더하여 가장 큰 수를 만드는 법칙. 단, 배열의 특정한 인덱스에 해당하는 수가 연속해서 K번을 초과하여 더해질 수 없음. 예1) 순서대로 2, 4, 5, 4, 6으로 이루어진 배열이 있을 때 M이 8이고, K가 3이라고 가정. 이 경우 특정한 인덱스의 수가 연속해서 3번까지만 더해질 수 있으므로 큰 수의 법칙에 따른 결과는 6+6+6+5+6+6+6+5인 46 단, 서로 다른 인덱스에 해당하는 수가 같은 경우에도 서로 다른 것으로 간주. 예2) 순서대로 3, 4, 3, 4, 3으로 이루어진 배열이 있을 때 M이 7이고, K가 2라고 간주. 이 경우 두 번째 원소에 해당하는 4와 네 번째 원소에 해당하는 4를 번갈아 두 번씩 더하는 것이 가능. 결과.. 더보기
[이것이 코딩 테스트다] 그리디 알고리즘 그리디(Greedy) '현재 상황에서 지금 당장 좋은 것만 고르는 방법' 매 순간 가장 좋아보이는 것을 선택 ⇒ 현재의 선택이 나중에 미칠 영향은 고려 안함 '사전에 외우고 있지 않아도 풀 수 있을 가능성이 높은 문제 유형' 정렬, 최단 경로 등의 알고리즘 유형은 사용 방법을 정확히 알고 있어야 함 그리디 알고리즘은 다익스트라 알고리즘과 같은 특이 케이스를 제외하고는 단순 암기를 통해 대처하긴 어렵 "창의력" 요구하는 문제 유형 ⇒ 문제를 풀기 위한 최소한의 아이디어를 떠올릴 수 있는 능력 요구 문제에서 '가장 큰 순서대로', '가장 작은 순서대로' 같은 기준을 알게 모르게 제시 대체로 정렬 알고리즘과 짝을 이뤄 출제됨 거스름돈 예제 당신은 음식점의 계산을 도와주는 점원이다. 카운터에는 거스름돈으로 사용.. 더보기