[Programmers] Lv. 3 최고의 집합 (python, js)

j-ij-i·2023년 1월 2일
0

알고리즘 문제풀이

목록 보기
10/10

문제 링크

link 📃 

문제 풀이

  • s를 n만큼 최대한 일정하게 나누었을때가 곱했을 때 가장 큰 값이 됩니다.
  • 따라서 s / n을 하여 몫을 구하고 몫이 s개 만큼 있는 배열을 만듭니다.
  • 그리고 나머지를 1씩 차례대로 더해줍니다.
  • 그리고 sort를 해주어 작은수가 앞에 나오게 합니다.

다른풀이 탐색

  • python에서 divmod를 사용하면 몫과 나머지를 바로 구할 수 있습니다.
  • js에서 Array().fill()을 쓰면 편하게 변수를 원하는 만큼 배열에 넣을 수 있습니다.

해결 코드

Python

def solution(n, s):
    answer = [s//n] * n
    rem = s%n
    
    for i in range(rem):
        answer[i] +=1
    answer.sort()
    
    if answer[0] == 0:
        return [-1]
    else:
        return answer

javascript

function solution(n, s) {
    let answer = [];
    
    const quo = Math.floor(s/n);
    const rem = Number(s%n);
    
    for(let i = 0; i < n ; i++){
        answer.push(quo);
    }
    for(let i = 0 ; i < rem ; i ++){
        answer[i] += 1;
    }
    answer.sort();
    
    if(answer[0] == 0){
        return [-1];
    }else{
        return answer;
    }
}
profile
안녕하세요, 프론트엔드를 좋아하는 개발자 jiji입니다.

0개의 댓글