새소식

알고리즘 테스트 ⏲/프로그래머스

[프로그래머스] lv3. 최고의 집합 풀이 (Python, JavaScript)

  • -
 

프로그래머스

코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.

programmers.co.kr

lv3. 최고의 집합

접근한 방법

문제 예시들을 보면 곱이 최대인 경우는 항상 0~s의 중간값이 가장 많은 집합의 곱이 가장 큰 값임을 알 수 있습니다. s가 짝수인 경우는 그대로 중간값들로 이루어진 배열을 리턴하면 되지만 홀수인 경우는 s를 n으로 나눈 나머지 횟수만큼 1씩 더해주어야 합니다.

 

문제 예시를 예로 들면 n = 2, s = 9일 경우 일단 원소가 s / n인 [4, 4]의 배열을 구성하고 s는 홀수이므로 나머지인 1회만큼 앞에서부터 원소를 1씩 더하면 [5, 4]가 되고 이 집합이 최고의 집합이 됩니다.

 

Python

def solution(n, s):
    if not s // n: 
        return [-1]
    arr = [s // n for _ in range(n)]
    for i in range(s % n):
        arr[i] += 1
    return sorted(arr)

JavaScript

function solution(n, s) {
    if (!parseInt(s / n)) return [-1]
    const arr = Array(n).fill(parseInt(s / n))
    for (let i = 0; i < s % n; i += 1) arr[i] += 1
    arr.sort()
    return arr
}

Contents

포스팅 주소를 복사했습니다

이 글이 도움이 되었다면 공감 부탁드립니다.