728x90
https://programmers.co.kr/learn/courses/30/lessons/12938
코딩테스트 연습 - 최고의 집합
자연수 n 개로 이루어진 중복 집합(multi set, 편의상 이후에는 "집합"으로 통칭) 중에 다음 두 조건을 만족하는 집합을 최고의 집합이라고 합니다. 각 원소의 합이 S가 되는 수의 집합 위 조건을 만
programmers.co.kr
계속 종이에 써보고 계속 숫자들 바꿔가며 사례를 찾아봤다.
일단 S // N 의 값을 최대한 많이 쓰는게 좋다.
몫은 S를 N개로 구성할 수 있는 가장 중간의 값이 되는데
주변으로 퍼지지 않고 가운데로 집중될수록 곱했을떄 값이 크다는걸 알았다.
S//N을 N개만큼 리스트에 넣어주고
S%N 만큼 각각의 요소에 +1을 해주면 정답이 나온다.
풀고나니까 너무 기분좋다 ㅋ
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
|
def solution(n, s):
answer = []
# 만약 나누었을때 몫이 0이 나오면
# 집합 자체를 만들 수 없음 이땐 -1 반환
if n > s:
return [-1]
# 몫 n개를 answer에 넣어준다
if s % n == 0:
m = s // n
answer = [m] * n
# 나누어 떨어지지 않으면
else:
# m을 n개만큼 리스트를 만들고
# 나머지 만큼 리스트 안의 갯수들에 각각 +1 해준다
m = s // n
n_ = s % n
answer = [m] * n
for i in range(n_):
answer[i] += 1
answer = sorted(answer)
return answer
|
cs |
728x90
'PS > 프로그래머스' 카테고리의 다른 글
[프로그래머스 LV 3] 야근 지수 (파이썬/python) (0) | 2021.06.17 |
---|---|
[프로그래머스 LV 3] 멀리 뛰기 (파이썬/python) (0) | 2021.06.17 |
[프로그래머스 LV 2] [1차] 프렌즈4블록 (파이썬/python) (0) | 2021.06.16 |
[프로그래머스 LV 2] 캐시 (파이썬/python) (0) | 2021.06.12 |
[프로그래머스 LV 2] 점프와 순간 이동 (파이썬/python) (0) | 2021.06.12 |