본문 바로가기
study/CodingTest

큰 수의 법칙 w/파이썬

by 고기만두(개발자) 2023. 8. 21. 21:01
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

댓글