Skip to content

TIL – 2024/10/21 그리디 알고리즘2

  • by

오늘은 피곤한 관계로 스프링을 넘어간다.

그리디 알고리즘

  1. 그리디 알고리즘, 큰 수의 법칙을 구현하는 것을 배웠다. 예로, 길이가 n인 배열에서 m번의 덧셈으로 가장 큰 수를 만드는 방법은 가장 큰 요소를 m으로 곱하면 된다. 여기서 k가 그걸 제한한다. k는 한 번에 가능한 덧셈의 수를 제한한다.
  2. 예시로, [1,2,3,4,5]란 배열에서 7이란 m이 주어지고, 4란 k가 주어지면, 가능한 최대 덧셈은 다음과 같다. 5 + 5 + 5 + 4 + 5 + 5 + 5
  3. 위를 다음과 같은 코드로 구현했다.
n, m, k = map(int, input().split())
data = list(map(int, input().split()))

data.sort(reverse=True)
result = (m // (k + 1)) * k * data[0]
result += (m // (k + 1)) * data[1]
result += (m % (k + 1)) * data[0]
print(result)

이에 대해서 다음 백준 문제를 풀이했다.

오늘의 TIL 끝!

Leave a Reply

Your email address will not be published. Required fields are marked *