728x90
https://school.programmers.co.kr/learn/courses/30/lessons/12938
문제 설명
자연수 n 개로 이루어진 중복 집합(multi set, 편의상 이후에는 "집합"으로 통칭) 중에 다음 두 조건을 만족하는 집합을 최고의 집합이라고 합니다.
- 각 원소의 합이 S가 되는 수의 집합
- 위 조건을 만족하면서 각 원소의 곱 이 최대가 되는 집합
예를 들어서 자연수 2개로 이루어진 집합 중 합이 9가 되는 집합은 다음과 같이 4개가 있습니다.
{ 1, 8 }, { 2, 7 }, { 3, 6 }, { 4, 5 }
그중 각 원소의 곱이 최대인 { 4, 5 }가 최고의 집합입니다.
집합의 원소의 개수 n과 모든 원소들의 합 s가 매개변수로 주어질 때, 최고의 집합을 return 하는 solution 함수를 완성해주세요.
규칙을 찾기 위한 예제들
n | s | answer | solution |
1 | 9 | [9] | 9//1 = 9 |
2 | 9 | [4, 5] | 9//2 = 4 -> 5//1 = 5 |
3 | 9 | [3, 3, 3] | 9//3 = 3 -> 6//2 = 3 -> 3//1 = 3 |
4 | 9 | [2, 2, 2, 3] | 9//4 = 2 -> 7//3 = 2 -> 5//2 = 2 -> 3//1 = 3 |
2 | 1 | [-1] | 1//2 = 0... |
풀이 과정
0. 처음 s//n == 0이라면 [-1]을 반환한다.
1. 반환되지 않았다면 answer에는 s//n의 값을 넣는다.
2, s = s - s//n 이 되고, n = n -1 이 된 이후 1~2 과정을 반복한다.
3. n = 1이 된다면 만들어진 answer 리스트를 반환한다.
<< 정답 코드 >>
def solution(n, s):
answer = []
if s // n == 0:
return [-1]
while n >= 1:
answer.append(s // n)
s -= s // n
n -= 1
return answer
728x90
'코딩테스트 > 프로그래머스' 카테고리의 다른 글
[프로그래머스 Level3] [1차] 셔틀버스 - 파이썬(Python) - 2018 KAKAO BLIND RECRUITMENT (0) | 2022.12.06 |
---|---|
[프로그래머스 Level3] 불량 사용자 - 파이썬(Python) - 2019 카카오 개발자 겨울 인턴십 (0) | 2022.12.06 |
[프로그래머스 Level3] 합승 택시 요금 - 파이썬(Python) - 2021 KAKAO BLIND RECRUITMENT (0) | 2022.11.30 |
[프로그래머스 Level3] 등굣길 - C언어(C++) (0) | 2022.11.30 |
[프로그래머스 Level3] 파괴되지 않은 건물 - 파이썬(Python) - 2022 KAKAO BLIND RECRUITMENT (0) | 2022.11.28 |