내 풀이
요령있는 풀이법의 핵심은 sort정렬해서 큰 수, 두 번째 큰 수 찾아내기
#큰 수의 법칙
# 배열의 크기 N, 숫자가 더해지는 횟수 M, K번 연속 불가
# n, m, k = map(int, input("숫자 입력: ").split())
# data = list(map(int, input("숫자 입력: ").split()))
n, m, k = 5, 8, 3
data = [2, 4, 5, 4, 6]
max = 0
sub_max = 0
result = 0
for i in range(len(data)):
if data[i] > max:
max = data[i]
for i in range(len(data)):
if (data[i] != max) & (data[i] > sub_max):
sub_max = data[i]
result += max * (m//k*k)
result += sub_max * (m-((m//k*k)))
print(result)
풀이 (1)
# 입력값 중 가장 큰 수와 두 번째로 큰 수를 저장하는 것이 포인트
# 가장 큰 수를 k번 더하고, 두 번째로 큰 수를 한 번 더하는 연산
#포인트2: 입력받은 리스트를 정렬하기!!
# n, m, k = map(int, input("숫자 입력: ").split())
# data = list(map(int, input("숫자 입력: ").split()))
n, m, k = 5, 8, 3
data = [2, 4, 5, 4, 6]
data.sort()
first = data[n-1]
second = data[n-2]
result = 0
while True:
for i in range(k):
if m == 0:
break
result += first
m -= 1
if m == 0:
break
result += second
m -= 1
print(result)
풀이(2) 수열로 접근하기
# 수열로 접근하기
n, m, k = 5, 8, 3
data = [2, 4, 5, 4, 6]
data.sort()
first = data[n-1]
second = data[n-2]
count = 0
count = (m//(k+1)) * k
count += m%(k+1)
result = 0
result += count * first
result += (m - count) * second
print(result)