[Alg] Greedy - 큰 수의 법칙

meredith·2021년 7월 29일

Alg

목록 보기
3/9

큰 수의 법칙

문제 상황
큰 수의 법칙 : 다양한 수로 이뤄진 배열이 있을 때 주어진 수들을 M번 더하여 가장 큰수를 만드는 법칙
단, 배열의 특정한 인덱스(번호)에 대항하는 수가 연속해서 K번을 초과하여 더해질 수 없음

ex) 2,4,5,4,6 순서로 이뤄진 배열, M : 8, K : 3
=> 6+6+6+5+6+6+6+5인 46
ex) 3,4,3,4,3 순서로 이뤄진 배열, M : 7, K : 2
=>4+4+4+4+4+4+4인 28

n, m ,k = map(int, input().split())

# n개의 수를 공백으로 구분하여 입력받기
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)

for문의 range를 생각해내기 좀 오래걸림

profile
해보자고 가보자고

0개의 댓글