본문 바로가기
코딩 테스트/그리디

큰 수의 법칙

by hazel_ 2021. 1. 11.

이것이 취업을 위한 코딩테스트다. 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)

'코딩 테스트 > 그리디' 카테고리의 다른 글

문자열 뒤집기  (0) 2021.01.16
곱하기 혹은 더하기  (0) 2021.01.16
모험가 길드  (0) 2021.01.16
1이 될 때까지  (0) 2021.01.11
숫자 카드 게임  (0) 2021.01.11

댓글