문제 설명
https://school.programmers.co.kr/learn/courses/30/lessons/12938
문제 풀이
- 주어진 S라는 숫자에 대해 n가지로 표현 한 뒤 각각의 표현들에 대해 곱한 값이 최댓값인걸 찾는 문제
- 중간 값에서 최댓값이 나온다는 걸 알게 됨
- S를 n으로 나눈 몫을 a, 나머지를 b라고 선언
- a가 n개가 있고, 그 중에서 b개 만큼 +1 을 하면 그 집합이 최댓값이 됨
- s=9,n=2 이면 a=4,b=1 => 2,2,2,2 => 3,2,2,2 => 24
소스 코드
def solution(n, s):
a=s//n
b=s%n
l = [a]*n
for i in range(-1,-b-1,-1): #집합이 오름차순으로 return 해야 돼서 마지막 순번으로부터 +1 해줌
l[i]+=1
if(l[0]==0):
return [-1]
return l
if(__name__=="__main__"):
n,s = map(int,input().rsplit())
print(solution(n,s))
'코딩 테스트 > 프로그래머스' 카테고리의 다른 글
[동적 계획법] 등굣길 (0) | 2023.03.31 |
---|---|
[DFS/BFS] 단어 변환 (0) | 2023.03.30 |
[DFS/BFS] 네트워크 (0) | 2023.03.30 |
[힙] 이중 우선순위 큐 (0) | 2023.03.29 |
[동적 계획법] 정수 삼각형 (0) | 2023.03.29 |