다양한 수로 이루어진 배열이 있을 때 주어진 수들을 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)
|
'PRACTICE > Basic' 카테고리의 다른 글
[Python] 패스워드 생성기 (0) | 2021.03.02 |
---|---|
[Python] 문자열 역순 출력 - reverse_sentence (0) | 2021.03.02 |
[Python] 거스름돈 계산 (0) | 2021.03.02 |
[Python] 수행시간 측정 코드 - time.time() (0) | 2021.03.02 |
[Flask] SQLAlchemy 사용하여 학생테이블 출력하기 (0) | 2020.11.25 |
댓글