본문 바로가기
알고리즘/1. 그리디

[그리디] 큰 수의 법칙

by hyeryun 2023. 1. 4.

책 풀이

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
count += m % (k + 1)

result = 0
result += (count) * first # 가장 큰 수 더하기
result += (m - count) * second # 두 번째로 큰 수 더하기

print(result) # 최종 답안 출력

나의 풀이

n,m,k = map(int, input().split())
array = list(map(int, input().split()))
array.sort(reverse=True)

sum = 0

for i in range(1, m+1):    
  if i%k == 0:
    sum += array[1]
  else:
    sum += array[0]

print(sum)

'알고리즘 > 1. 그리디' 카테고리의 다른 글

#11399 ATM  (0) 2023.01.11
#1931 회의실 배정  (0) 2023.01.07
#11047 동전 0  (0) 2023.01.05
[그리디] 1이 될 때까지  (0) 2023.01.05
[그리디] 숫자 카드 게임  (0) 2023.01.05