문제
다양한 수로 이루어진 배열이 있을 때 주어진 수들을 M번 더하여 가장 큰 수를 만드는 법칙. 단, 배열의 특정한 인덱스(번호)가 해당하는 수가 연속해서 K번 초과하여 더해질 수 없음
입출력
첫째 줄에 배열의 크기 N, 숫자가 더해지는 횟수 M, K가 주어지고
둘째 줄에 N개의 자연수가 주어짐
예제 입력 | 예제 출력 |
5 8 3 2 4 5 4 6 |
46 |
풀이
내 풀이
문제 핵심: 입력된 값들 중 가장 큰 값 두 개만을 사용함
가장 큰 값 k 번 + 두 번째로 큰 값 1번 + 가장 큰 값 k 번... 이렇게 더해나감
n, m, k = map(int, input().split()) # input().split() 쓰면 map으로 int 처리
arr = list(map(int, input().split()))
arr.sort(reverse=True)
answer = 0 # return할 큰 수
num = 0 # 첫번째 인덱스 몇 번 합했는가
cnt = 0 # 지금까지 몇 개를 더했는가
while cnt < m:
if num < k:
answer += arr[0]
num += 1
else:
answer += arr[1]
num = 0
cnt += 1
print(answer)
'코테 공부 > 그 외 사이트' 카테고리의 다른 글
[Python] 1206. [S/W 문제해결 기본] 1일차 - View (0) | 2022.11.25 |
---|---|
[Python/BFS] 3.구름이의 여행 2 (0) | 2022.11.22 |
[Python/DFS] 2.퍼져나가는 소문 / 그래프 탐색 (0) | 2022.11.21 |
[Python] 1.UXUI 디자이너/ lambda, sorted (0) | 2022.11.21 |
[Python/BFS] 이코테 미로탈출 (중요. 기본기) (0) | 2022.08.17 |