자연수 n 개로 이루어진 중복 집합(multi set, 편의상 이후에는 "집합"으로 통칭) 중에 다음 두 조건을 만족하는 집합을 최고의 집합이라고 한다.
예를 들어서 자연수 2개로 이루어진 집합 중 합이 9가 되는 집합은 다음과 같이 4개가 있다.
그중 각 원소의 곱이 최대인 { 4, 5 }가 최고의 집합이다.
집합의 원소의 개수 n과 모든 원소들의 합 s가 매개변수로 주어질 때, 최고의 집합을 return 하는 solution 함수를 완성하는 문제
S-=m, N-=1from typing import List
def solution(n: int, s: int) -> List:
answer:List = list()
if n > s: # 예외 : 최고의 집합이 만들어지지 않는 경우
return [-1]
while n > 0: # 아래 과정을 통해 집합의 원소가 N개가 될 때까지 반복
m = s//n # S를 최대한 큰 수로 토막내야 한다.
answer.append(m)
n -= 1
s -= m
return sorted(answer) # 오름차순으로 정렬된 리스트를 반환
🙏 문제 접근 방법 및 코드에 대한 피드백과 질문은 환영입니다!
본 문제의 다른 풀이 및 피드백, 전체 문제 풀이 순서는 위 알고리즘 스터디 Repository에서도 확인 가능합니다.