CodingTest/이것이 코딩테스트다(with python)
[그리디] 큰수의 법칙
dongok218
2025. 4. 3. 20:34
<단순하게 푸는 답안>
#큰수의 법칙
n, m, k = map(int, input().split())
data = list(map(int, input().split()))
data.sort()
first = data[n-1]
second = data[n-2]
result=0
while True:
for i in range(k):
if m==0:
break
result += first
m -= 1
if m ==0:
break
result += second
m -= 1
print(result)
<규칙을 찾아 푸는법>
# N, M ,K를 공백으로 구분하여 입력받기
n, m, k = map(int, input().split())
# N개의 수를 공백으로 구분하여 입력받기
data = list(map(int, input().split()))
data.sort()
first = data[n-1]
second = data[n-2]
#가장 큰 수가 더해지는 횟수 계산
count = int(m/(k+1)) * k #가장 큰수가 등장한 횟수-> (수열의 반복횟수) x k
count += m % (k+1) #가장 큰 수가 등장했을때 나누어떨어지지 않을경우 나머지 합산
result = 0
result += (count) * first
result += (m-count) * second
print(result)