Coding Test
[프로그래머스] 최고의 집합
상상쓰
2021. 8. 13. 17:49
https://programmers.co.kr/learn/courses/30/lessons/12938
코딩테스트 연습 - 최고의 집합
자연수 n 개로 이루어진 중복 집합(multi set, 편의상 이후에는 "집합"으로 통칭) 중에 다음 두 조건을 만족하는 집합을 최고의 집합이라고 합니다. 각 원소의 합이 S가 되는 수의 집합 위 조건을 만
programmers.co.kr
두 수의 합이 같을 때 두 수의 차이가 가장 작다면 곱이 가장 크다.
x * (s-x) 로 그래프만 그려보더라도 위의 명제가 사실이라는 것을 이해할 수 있을 것이다.
위의 사실로 n 이 3이상일 때 각 수의 차이가 가장 작을 때 곱이 가장 크다는 것을 이해할 수 있다.
def solution(n, s):
answer = []
if n > s:
answer.append(-1)
else:
q, r = divmod(s, n)
answer = [q] * n
for i in range(n-r, n):
answer[i] += 1
return answer
print(solution(2, 9)) # [4, 5]