문제 링크
https://programmers.co.kr/learn/courses/30/lessons/12938
코딩테스트 연습 - 최고의 집합
자연수 n 개로 이루어진 중복 집합(multi set, 편의상 이후에는 "집합"으로 통칭) 중에 다음 두 조건을 만족하는 집합을 최고의 집합이라고 합니다. 각 원소의 합이 S가 되는 수의 집합 위 조건을 만
programmers.co.kr
풀이
- 곱이 최대가 되려면 각 자연수간 차이가 적어야 한다.
- n이 s보다 큰 경우, n개의 자연수로 s를 만드는 것이 불가능하므로 [-1] 반환
- 아닌 경우,
- s를 n으로 나눈 몫을 answer 배열에 n개 저장
- 나머지가 있을 수 있으므로, 나머지만큼 뒤에서부터 1을 더해줌 (오름차순이므로)
def solution(n, s):
answer = []
if n > s :
return [-1]
num = s // n
for _ in range(n):
answer.append(num)
index = len(s) -1
for i in range(s%n):
answer[index] += 1
index -= 1
return answer
'개발 > algorithm' 카테고리의 다른 글
[프로그래머스][level3] 야근 지수 -python (0) | 2022.01.18 |
---|---|
[프로그래머스][level3] 줄 서는 방법 -python (0) | 2022.01.13 |
[프로그래머스][level3] 멀리 뛰기 -python (0) | 2022.01.13 |
[프로그래머스][level3] 스티커 모으기(2) -python (0) | 2022.01.13 |
[프로그래머스][level3] 숫자 게임 -python (0) | 2022.01.11 |