728x90
반응형
첫째줄
배열의 크기 N (2<= N <= 1000)
숫자가 더해지는 횟수 M (1<=M <= 10000)
같은 수가 최대 K번 초과 불가 (1<= K <= 10000)
K<= M
둘째줄
N개의 자연수 (1<=x<=10000), 각 자연수는 공백으로 구분
ex)
5 8 3
2 4 5 4 6
-> 6 + 6 + 6 + 5 + 6 + 6 + 6 + 5 = 46
큰수의법칙에 따라 출력되는 정답?
가장 큰 수를 K번 -> 그다음 큰수 1번 -> 맥스 K번 -> ,,,, 이런식으로 돌리면 된다
결론적으로 M M M N M M M N ... 꼴이 될거고
가장 큰 수의 반복 횟수는 int(M /(K+1)) 번
나누어 떨어지지 않을 수도 있고.
그다음 2짱의 반복횟수는 M % (K+1) 번 .
#배열의 크기 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] #두번째로 큰수
rpt = int( m / (k+1) ) #가장 큰 수의 반복횟수
count = rpt * k #가장 큰 수는 반복횟수 * K번 등장
count += m % (k+1) #두번째 큰 수
result = 0
result = count * first + (m-count) * second
print(result)
반응형
728x90
반응형
'study > CodingTest' 카테고리의 다른 글
그룹 알고리즘 w/파이썬 (0) | 2023.05.29 |
---|---|
최빈값 알고리즘 w/파이썬 (0) | 2023.05.28 |
병합 알고리즘 w/파이썬 (0) | 2023.05.21 |
이진 검색 알고리즘 w/파이썬 (0) | 2023.05.20 |
파이썬 반복문 누적합계 (0) | 2023.03.20 |
댓글