큰 수의 법칙

Polla·2023년 1월 6일
post-thumbnail

" 이것이 코딩테스트다 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)

profile
트러블 슈팅 Blog => https://polla.palms.blog/home

0개의 댓글