
책 "
이것이 코딩테스트다 with 파이썬" 연습
💡 문제
동빈이의 큰 수의 법칙은 다양한 수로 이루어진 배열이 있을 때 주어진 수들을 가장 큰 수를 만드는 법칙이다. 단, 배열의 특정한 인덱스(번호)에 해당하는 수가 연속해서 K번을 초과하여 더해질 수 없는 것이 이 법칙의 특징이다.
📌 입력 조건
- 첫째 줄에 N(2 <= N <= 1,000), M(1 <= M <= 10,000) k(1<= k <= 10,000)의 자연수가 주어지며 각 자연수는 공백으로 구분한다. - 둘째 줄에 N개의 자연수가 주어진다. 각 자연수는 공백으로 구분한다. 각 자연수는 공백으로 구분하며, 단 각각의 자연수는 1, 10,000 이하의 수로 주어진다. - 입력으로 주어지는 k는 항상 m보다 작거나 같다.
🔐 출력 조건
- 첫째 줄에 동빈이의 큰 수의 법칙에 따라 더해진 답을 출력한다. ex) 5 8 3 2 4 5 4 6 출력: 46
sum() 이라는 함수를 이용하고 싶어 list를 만들었다.
필요한 것은 가장 큰 수 와 두번째로 큰 수 이므로
sort()를 이용해 정렬 후 각각의 수 의index를 찾아 변수에 넣어줬다.
n, m, k = map(int,input().split())
N = list(map(int, input("n개의 자연수를 입력해주세요.: ").split()))
N.sort()
answer = []
num1 = N[n-1]
num2 = N[n-2]
for i in range(1, m+1):
if i % (k+1) == 0:
answer.append(num2)
else:
answer.append(num1)
print(sum(answer))
참고로 책에서는 가장 큰 수가 더해지는 횟수를 구해 넣어주는 방식이었다.
n, m, k = map(int,input()).split()
.
.
count = int(m/(k+1)) * k
count += m % (k+1)
.
.
print(result)