728x90
문제
https://school.programmers.co.kr/learn/courses/30/lessons/12938
풀이
해당 문제는 이전에 풀었던 야근 지수 문제에서 발견한 법칙이 그대로 적용된다.
각 수의 제곱의 합은 모든 수의 표준편차가 가장 적을 때가 가장 크다.
저번에 풀었던 문제에서는 주어지는 값들을 저장해 정해진 수 만큼 빼며 최적의 수를 찾았지만, 이번 문제는 특정 값을 N가지 수들의 합을 만족하고 제곱의 합이 가장 큰 수를 찾아야 한다.
이런 문제는 나눈 값과 나머지 값을 이용해 풀이가 가능했다.
우선 n이 s 보다 큰 경우는 각 수들이 1이여도 항상 s 보다 큰 결과가 나오기 때문에 정답이 나올 수 없다.
그렇다면 나머지 경우를 따져보도록 하자. s / n 값을 구하고 s % n 을 구해준다.
나머지 값이 0인 경우는 오직 s / n 값만으로 조합을 구성했을 때 가장 표준편차가 적으며 각 요소의 제곱의 합이 가장 큰 경우이다.
그리고 나머지 값이 0보다 큰 경우는 나머지 수 보다 1큰 수를 더해주고 나머지에서 1을 빼준다.
코드
function solution(n, s) {
if(n > s) return [-1];
else{
const div = Math.floor(s / n);
let rest = s % n;
const answer = [];
if(rest === 0){
for(let i = 0; i < n; i++){
answer.push(div);
}
}
else if(rest > 0){
for(let i = 0; i < n; i++){
if(rest > 0){
answer.push(div + 1);
rest--;
}
else if(rest === 0) {
answer.push(div);
}
else break;
}
}
return answer.sort();
}
}
728x90
'코딩 테스트 > 프로그래머스 코딩 테스트 연습' 카테고리의 다른 글
[JS] 프로그래머스_Level 3_ 기지국 설치 (0) | 2024.07.18 |
---|---|
[JS] 프로그래머스_Level 3_숫자 게임 (0) | 2024.07.17 |
[JS] 프로그래머스_level 3_야근 지수 (0) | 2024.07.12 |
[Javascript] 3Level_네트워크 (0) | 2024.06.10 |
[Javascript] 가장 큰 수 (0) | 2024.05.28 |