Programmers 최고의 집합, Javascript

cptkuk91·2022년 10월 6일
1

Algorithm

목록 보기
108/161

문제

https://school.programmers.co.kr/learn/courses/30/lessons/12938

코드

function solution(n, s) {
	if(n > s) return [-1];
    
    const middle = Math.floor(s / n);
    const result = new Array(n).fill(middle);
    
    for(let i = 0; i < s % n; i++){
    	result[result.length - 1 - i]++;
    }
    return result;
}

코드 풀이

  • if(n > s)의 경우 크기가 1인 1차원 배열을 뜻한다.

  • middle을 통해 중간값을 구한 후 자연수 n의 개수만큼 배열을 만들어준다. 그리고 middle을 채워준다.

  • s % n 홀수 인 경우, result[result - 1 - i]++을 통해 값을 더해준다.

solution(2,9)를 예로 들었을 때,
middle은 4입니다. result에 4를 전부 채워넣습니다.
홀수인 경우 9 % 2를 통해 1이라는 값을 얻을 수 있습니다. 결국 반복문은 0입니다.
result[result.length - 1 - 0]을 통해 result의 1번째(첫번째) 자릿값을 얻을 수 있습니다.
이 상황에서 ++을 통해 4라는 값에 1을 더해줍니다.
그럼 문제가 원하는 값 곱셈의 최대값을 구할 수 있습니다.

profile
메일은 매일 확인하고 있습니다. 궁금하신 부분이나 틀린 부분에 대한 지적사항이 있으시다면 언제든 편하게 연락 부탁드려요 :)

0개의 댓글