변수
- N : 배열의 크기
- M : 숫자가 더해지는 횟수
- K : 젤 큰수가 더해질 수 있는 최대 수
- listN : 주어지는 배열
- first : 배열 중 가장 큰 수
second : 배열 중 두번째로 큰 수
- total : 더해지는 수
로직
- NMK 입력받기
- N list 입력받기
- sort() 로 정렬 -> 가장큰수 두번째로큰수 찾기
- for M 만큼 돌면서
K만큼 first를 + (M-1 , K-1)
한번 second를 + (M-1)
위 둘을 반복,,, M=0이될때까지
코드
N,M,K = map(int, input().split())
k = K
list_data = list(map(int, input().split()))
list_data.sort()
first = list_data[-1]
second = list_data[-2]
total = 0
for data in range (0,M) :
total += first
k -= 1
M -= 1
if (M==0):
break
if(k==0):
total += second
M -=1
k = K
if (M==0) :
break
print(total)
25/03/03
로직
- 입력값 입력받기 NMK
배열 입력받기 sumList
- 배열 내림차순 정렬 (큰수부터)
first = 젤 큰수
second = 두번째 큰수
- countSec = m//k
- answer = second countSec + (m-countSec) first
코드
n, m, k = list(map(int, input().split()))
sumList = list(map(int, input().split()))
sumList.sort(reverse=True)
first = sumList[0]
second = sumList[1]
countSec = m // k
answer = (second * countSec) + (m - countSec) * first
print(answer)