상상쓰

[프로그래머스] 최고의 집합 본문

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]

'Coding Test' 카테고리의 다른 글

[프로그래머스] 쿠키 구입  (0) 2021.08.15
[백준] 괄호 추가하기  (0) 2021.08.14
[프로그래머스] 블록 게임  (0) 2021.08.12
[백준] 돌 게임  (0) 2021.08.12
[백준] 평범한 배낭  (0) 2021.08.11
Comments