본문 바로가기
PRACTICE/Basic

[Python] 큰 수의 법칙

by 1005 2021. 3. 2.

 

 

다양한 수로 이루어진 배열이 있을 때 주어진 수들을 M번 더하여 가장 큰 수 를 만드는 법칙

단, 배열의 특정한 인덱스(번호)에 해당하는 수가 연속해서 K번을 초과하여 더해질 수 없다. 

    서로 다른 인덱스에 해당하는 수가 같은 경우에도 서로 다른 것으로 간주한다. 

 

(해결방법)

1. 입력 값 중에서 가장 큰 수와 두 번째로 큰 수만 저장한다.

2. 연속으로 더할 수 있는 횟수는 최대 K번이므로

   '가장 큰 수를 K번 더하고 두번째로 큰 수를 한 번 더하는 연산'을 반복한다.

 

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
# 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#두 번째로 큰 수
 
result = 0
 
while True:
    for i in range(k): #가장 큰 수를 K번 더하기
        if m == 0# m이 0이라면 반복문 탈출
            break
        result += first
        m -= 1 # 더할 때마다 1씩 빼기
    if m == 0# m이 0이라면 반복문 탈출
        break
    result += second #두 번째로 큰 수를 한 번 더하기
    m -= 1 #더할 때마다 1씩 빼기
 
print(result)

 

 

댓글