[프로그래머스] 최고의 집합

이정연·2023년 9월 12일
0

CodingTest

목록 보기
162/165

문제 링크

풀이

산술 기하 평균을 생각하면 쉽게 풀 수 있다.

여기서 중요한 부분은 a1=a2=...=an일 때만 등호가 성립한다는 조건이다.

다시 말해, 합이 s인 여러개의 수들이 크기가 비슷할수록 곱이 커진다는 뜻.

따라서 최대한 숫자들을 비슷하게 맞추기 위해 길이가 n인 리스트의 각 항을 s//n으로 깔아놓고

나머지를 각 원소에 하나씩 더한 리스트가 정답이 된다.

코드

def solution(n, s):
    a,b = divmod(s,n)
    if s > n:
        answer = [a]*n
        for i in range(b):
            answer[i] += 1
        return sorted(answer)
    return [-1]
    
profile
0x68656C6C6F21

0개의 댓글