이것이 취업을 위한 코딩 테스트다 with 파이썬을 공부하면서 정리한 내용입니다.
5 8 3
2 4 5 4 6
46
# 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) # 최종 답안 출력
int(M / (K + 1)) * 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[-1] # 가장 큰 수
second = data[-2] # 두 번째로 큰 수
# 가장 큰 수가 더해지는 횟수 계산
count = int(m / (k + 1)) * k
count += m % (k + 1)
result = 0
result += count * first # 가장 큰 수 더하기
result += (m - count) * second # 두 번째로 큰 수 더하기
print(result) # 최종 답안 출력
max()
함수를 사용remove()
함수로 제거 후 다시 max()
함수를 사용import sys
# n: 배열의 크기, m: 더하는 횟수, k: 특정 인덱스의 수를 연속해서 더할 수 있는 횟수
n, m, k = map(int, sys.stdin.readline().rstrip().split())
array = list(map(int, sys.stdin.readline().rstrip().split()))
first = max(array) # 가장 큰 수
array.remove(first)
second = max(array) # 두 번째로 큰 수
result = 0
count = 0 # 가장 큰 수를 더한 횟수
for _ in range(m):
if count < k:
result += first
count += 1
else:
result += second
count = 0
print(result)
import sys
# n: 배열의 크기, m: 더하는 횟수, k: 특정 인덱스의 수를 연속해서 더할 수 있는 횟수
n, m, k = map(int, sys.stdin.readline().rstrip().split())
array = list(map(int, sys.stdin.readline().rstrip().split()))
first = max(array) # 가장 큰 수
array.remove(first)
second = max(array) # 두 번째로 큰 수
sequence = first * k + second # 반복되는 수열
result = 0
result += sequence * (m // (k + 1))
result += first * (m % (k + 1))
print(result) # 최종 답안 출력