티스토리 뷰

반응형

code

 문제

 

 

 문제 상황

 

- 총 합이 주어지고 요소의 수가 주어졌을 때 곱이 최대가 되는 집합을 찾는 문제

 

 

 

 해결 전략

 

- 몇차 함수인지를 떠나 해의 개수가 늘어날 수록 자연수 범위에서 함수의 증가속도는 떨어진다. 즉, 요소의 곱은 모든 항이 다 같을 때, 가장 크면 같지 않더라도 그 차이가 적을수록 결과가 크게 된다.

 

- 최소 요소가 1이므로 총 합은 최소 1*n = n보다 커야하므로 n > s이면 [-1]을 반환한다.

 

- 고르게 나눠 몫을 배치하고 나머지를 1씩 배치하면 곱이 최대가 되는 집합이 된다.

 

 

 

 코드

 

1
2
3
4
5
6
7
8
def solution(n, s):
    if n > s:
        return [-1]
    q, r = divmod(s, n)
    result = [q] * n
    for i in range(1,r+1):
        result[-i] += 1
    return(result)
cs

 

 

 

 해설

 

- .

 

 

 

 새로 학습한 것 & 실수 

 

- .

 

 

 

 

출처 - https://programmers.co.kr/learn/courses/30/lessons/12938
반응형
댓글