728x90
문제 상황
배열의 크기: n
숫자가 더해지는 횟수: m
주어지는 입력값: k
다양한 수로 이루어진 배열에서 주어진 수들을 m번 더하여 가장 큰 수를 만들기
입력으로 주어지는 k는 항상 m보다 작거나 같음
아이디어
입력값 중에서 가장 큰 수와 두 번째로 큰 수 저장
'가장 큰 수를 k번 더하고, 두 번째로 큰 수를 1번 더한다'를 반복
해결 코드
#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) # 최종 답안 입력
'프로그래밍 > 알고리즘' 카테고리의 다른 글
백준 - N과 M(1) 15649번 파이썬 (3) | 2023.02.10 |
---|---|
백준 - 1로 만들기 1463 파이썬 (0) | 2023.02.09 |
파이썬 입출력 베이스 코드 (0) | 2023.02.06 |
설날 공부(알고리즘-1259, CS스터디) (0) | 2023.01.22 |
프로그래머스 - 숫자 문자열과 영단어 파이썬 (0) | 2023.01.20 |
댓글