728x90
반응형
https://school.programmers.co.kr/learn/courses/30/lessons/12938
프로그래머스
코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.
programmers.co.kr
난이도
LV 3
문제 설명
자연수 n개로 이루어진 집합이 있다.
집합 원소들의 합은 s와 동일하다.
이때 가능한 집합 중 각 원소의 곱이 최대가 되도록 하는 집합을 Return해주어야 한다.
만약 집합이 존재하지 않는 경우에는 [-1]을 Return 한다.
접근법
- 우선 집합이 존재하지 않는경우는 집합 원소의 수(n)가 원소의 합 (s)보다 크면 집합이 없다. (원소가 자연수이기 때문에 각 원소의 최소값은 1이므로 ) => 이때 [-1]을 Return 해준다.
- 각 원소의 곱이 최대가 될때는 각 원소가 모두 함께 될 수 있는 최대 값을 가져야 한다.
ex) s = 9 , n = 3 일때 집합[3,3,3] 이 최대가 된다,
s = 13, n = 3 일때 집합 [4,4,5] 이 최대가 된다.
- 해당 경우는 s를 n으로 나눈 몫들이 들어간다면 최대가 된다!
- 따라서 s를 n으로 나눈 몫을 집합에 저장하면서 해당 값을 s에서 빼고 n에서도 1씩 빼주며 n만큼 진행하면 원하는 집합이 완성된다.
코드
def solution(n, s):
answer = []
if s < n:
return [-1]
for i in range(n):
answer.append(s//n)
s -= s//n
n -= 1
return answer
728x90
반응형
'알고리즘 > 프로그래머스' 카테고리의 다른 글
[프로그래머스] 단어 변환 by 파이썬 (Python) : DFS (0) | 2023.08.07 |
---|---|
[프로그래머스] 야근 지수 by 파이썬 (Python) (0) | 2023.08.06 |
[프로그래머스] 이중 우선 순위 큐 by 파이썬 (Python) : heap (0) | 2023.08.03 |
[프로그래머스] 정수 삼각형 by 파이썬 (Python) : 동적 계획법 (Dynamic programming) (0) | 2023.07.31 |
[프로그래머스] 2019 KAKAO BLIND RECRUITMENT 길 찾기 게임 by 파이썬 (Python) : 트리 순회 (0) | 2023.07.28 |