알고리즘[Python]/프로그래머스

[ Lv 3 ] 최고의 집합

병훈1234 2021. 7. 26. 10:26

풀이 과정

  1. 곱이 최대가 되려면 집합의 모든 수가 비슷한 값을 가질때가 최대이다
    • 예시) n = 3, s = 9라면, (3, 3, 3)이 최대값
  2. 따라서.. s를 n으로 나눈 값들을 넣어 주고, 나머지값은 n+1을 넣어서 채워준다.
    • 즉, s//n을 (n - (s % n))개 넣어주고, (s//n)+1을 (s % n)개 넣어주면 된다.
  3. 결과값을 오름차순으로 정렬해준다.

소스 코드

def solution(n, s):
    answer = []
    temp = s // n
    p = s

    if temp == 0:
        return [-1]

    if s % n == 0:
        answer = [temp] * n
    else:
        answer = [temp + 1] * (s % n) + [temp] * (n - (s % n))

    answer.sort()
    return answer

출처: 프로그래머스 코딩 테스트 연습, https://programmers.co.kr/learn/challenges