yuns
큰 수의 법칙 본문
반응형
큰 수의 법칙
첫 줄에 n, m, k을 입력으로 받는다. n은 받을 데이터의 개수, m는 더하는 숫자의 개수, k는 연속으로 더할 수 있는 최대개수를 의미한다.
#큰 수의 법칙
n, m, k = map(int, input().split())
data = list(map(int, input().split()))
data.sort()
# 가장 큰 두 개의 숫자의 연속인 합으로 나타남
first = data[n - 1]
second = data[n - 2]
res = 0
while True:
#가장 큰 수를 연속으로 k번 더하기
for _ in range(k):
if m == 0:
break
else:
res += first
m -= 1
if m == 0:
break
#하나의 숫자를 연속으로 k번 더한 뒤 다른 숫자 하나를 한 번 더해주는 작업 진행
res += second
m -= 1
print(res)
#큰 수의 법칙
n, m, k = map(int, input().split())
data = list(map(int, input().split()))
data.sort()
# 가장 큰 두 개의 숫자의 연속인 합으로 나타남
first = data[n - 1]
second = data[n - 2]
res = 0
#k * 연속으로 더해질 갯수 + k보다 작은 개수
numOfFirst = (m // (k+1)) * k + m % (k+1)
res = first * numOfFirst + second * (m - numOfFirst)
print(res)
반응형
'algorithms > #3 Greedy algorithm' 카테고리의 다른 글
1이 될 때까지 (0) | 2020.11.04 |
---|---|
숫자 카드 게임 (0) | 2020.11.04 |
Comments