Completion over Perfection

프로그래머스 - 최고의 집합 (파이썬3 Python3) 본문

파이썬 (Python)

프로그래머스 - 최고의 집합 (파이썬3 Python3)

난차차 2023. 8. 19. 12:36
반응형

https://school.programmers.co.kr/learn/courses/30/lessons/12938

 

프로그래머스

코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.

programmers.co.kr

 

 

n과 s가 주어지는데 n개의 원소를 가진 집합의 각 원소의 합은 s가 되어야합니다. 

n이 3이고 s가 8일 경우, 원소는 3개이고 이 3개의 원소를 모두 합친 값이 8이 되어야 합니다. 

 

{1,1,6}

{1,2,5}

{1,3,4}

{2,3,3}

.

.

.

 

중요한 특징은 원소의 순서는 상관이 없다는 것. 

따라서 위의 예시에서 {1,2,5} 와 {1,5,2}는 한개의 집합으로 취급한다는 겁니다. 

 

이 조건을 만족하는 집합은 예시에서 보았듯이 여러개가 나오겠지만,

그 중에서 n개의 원소를 모두 곱했을 때 최대치가 나오는 집합이 최고의 집합이라고 합니다. 

 

이 문제를 보자마자 느낀것은 

최고의 집합은 s를 n으로 나눈 값이 무조건 포함이 되어야 한다는 것이었습니다. 

그리고 이 s를 n으로 나눈값을 집합에 계속 추가해준다면 결국 그것이 최고의 집합이 된다는 뜻이겠죠. 

 

 

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
def solution (n, s):
    if n>s:
        return [-1]
    answer = []
    keyNum =  s//n
    answer.append(keyNum)
    n -= 1
    while n > 0:
        s -= keyNum
        keyNum = s//n
        answer.append(keyNum)
        n -= 1
        # print("n : ",  n, "s : ", s, "keyNum : ", keyNum)
 
    return answer
cs

 

 

 

반응형
Comments