이것이 취업을 위한 코딩테스트다. with 파이썬
p.92
방법 1
N,M,K=map(int, input().split())
# N 입력 갯수 M 더하는 횟수 K 연속적으로 나올 수 있는 최대의 횟수
n=list(map(int, input().split()))
n.sort()
first=n[N-1]
second=n[N-2]
result=0
while True:
for i in range(K):
if M==0:
break;
result = result+first
M -= 1
result=result+second
M -= 1
if M==0:
break;
print(result)
--> M값이 높아질 경우 시간 초과 판정을 받을 가능성이 큼
방법 2
N,M,K=map(int, input().split())
# N은 data로 받아올 수 있는 갯수, M은 총 더하는 횟수, K는 연속으로 더할 수 있는 최대 횟수
data=list(map(int, input().split()))
result = 0
count = M // (K+1) * K
count += M % (K+1)
data.sort()
result += data[N-1] * count
result += data[N-2] * (M-count)
print(result)
댓글