[이코테] 실전문제 2번 큰 수의 법칙

2023. 2. 9. 23:14Algorithm

문제 : 주어진 수들을 M번 더하여 가장 큰수를 만드는 법칙이다. 단. 배열의 특정한 인텍스에 해당하는 수가 연속으로 K번을 초과하여 더해질 수 없는 것이 이 법칙의 특징이다 

 

  • 첫번째 줄에는 n m k가 공백으로 자연수 구분 
  • 두번째 줄에는 n 리스트 값을 넣어준다 
  • 입력으로 주어지는 K는 항상 M보다 작거나 같다
n,m,k = map(int, input().split())
data = list(map(int, input().split()))

# 리스트로 입력 받는 값을 k 번이상 똑같은 수로 반복할 수 없고 m 번반복해서 더해줘야한다 

# 첫번째로는 큰수를 k번 반복 후 그다음 큰수를 찾는다 해당 인덱스 번호를 제외하고 찾기 
# 첫번째로 큰수를 찾고 두번째 큰수를 찾는다 그리고 반복하는 것이 방법일 것이다 

# 1번 리스트에서 첫번째로 큰 수를 찾는다
data.sort()
first_num = data[n-1]
second_num = data[n-2]
print(data.sort())
print(first_num)
print(second_num)
# 2번 k번 반복하고 다음 수로 넘어가기

# 결과물
result = 0
while True:
  
  # k 번만큼 반복
  for i in range(k):
    if m == 0:
      break

    result += first_num
    m -= 1

  if m == 0:
    break

  result += second_num
  m-=1
  
print(result)​