*문제 출처는 프로그래머스에 있습니다.
문제 제목: 최고의 집합 (3단계)
문제 사이트: https://school.programmers.co.kr/learn/courses/30/lessons/12938
문제 설명
나의 풀이
def solution(n, s):
answer = []
center = s // n
if s < n:
return [-1]
for i in range(n):
answer.append(center)
for i in range(s % n):
answer[i] += 1
answer.sort()
return answer
직관적으로 봤을 때 s를 기준으로 중간으로 나눈 값을 answer에 넣고 나머지가 남은 만큼 1씩 증가시키면 될 것 같다는 생각이 들었다. 그걸 기반하여 푼 코드이다.
※ 알아야 할 것
파이썬에는 itertools(조합, 중복 조합 등) 수학을 이용할 수 있는 모듈이 있다. 하지만 이 문제에서는 그렇게 사용해서 풀었다간 시간복잡도가 나갈 것이다. 그러므로 수학적으로 접근해서 코드를 줄이는 게 좋은 방법인 것 같다.
'코딩테스트(프로그래머스 & 백준) > 프로그래머스-Python' 카테고리의 다른 글
Programmers / 등굣길 / Python (0) | 2024.05.09 |
---|---|
Programmers / 택배상자 / Python (0) | 2024.05.07 |
Programmers / 야근 지수 / Python (0) | 2024.05.03 |
Programmers / 단어 변환 / Python (0) | 2024.04.16 |
Programmers / 이중우선순위큐 / Python (0) | 2024.04.12 |