[프로그래머스] 최고의 집합(Python)
1.아이디어
n
개의 원소들간의 차이가 거의 없으면서 합이 s
일때, 각 원소의 곱이 최대가 된다. 따라서 우리가 해야할 일은 각 원소의 차이가 없으면서 합이 s
를 이루는 원소들을 찾는 것이 목표다. 원소를 구하기 위한 간단한 방법으로 나눗셈이 있다. s
를 n
으로 나누면 몫과 나머지가 나온다. 몫은 여기서 하나의 원소고, 나머지는 하나의 원소에서 +1
를 할 때 사용된다. 예를들어 n
이 3이고 s
가 17일 때, 몫은 5, 나머지는 2이다. 몫만 고려했을 때, {5,5,5}
가 나온다. 여기서 하나의 원소에 대해, 나머지가 0이 될 때까지 +1
연산을 하면 {6,6,5}
가 된다. 이후, 문제 요구사항에 맞게 정렬을 취하면된다.
2.코드
def solution(n, s):
p = s // n
if p == 0: return [-1]
q = s % n
answer = [p] * n
k = 0
while q > 0:
answer[k%n] += 1
q -= 1
k += 1
answer.sort()
return answer
Author And Source
이 문제에 관하여([프로그래머스] 최고의 집합(Python)), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://velog.io/@study-dev347/프로그래머스-최고의-집합저자 귀속: 원작자 정보가 원작자 URL에 포함되어 있으며 저작권은 원작자 소유입니다.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)