SMALL
1. 약수의 개수와 덧셈
function solution(left, right) {
var answer = 0;
const cnt_arr = Array.from({length: right-left+1}, () => 0);
// 1과 자기 자신은 포함 > 2를 default 값으로
// 약수 개수 구하기
for(let i = left; i<=right; i++) {
for(let j=1; j<=Math.sqrt(i); j++) {
if (i%j==0) {
// 특정 숫자의 제곱이 left 일 때, 중복 값 제외하고 넣음.
if(Math.pow(j, 2) == i) {
cnt_arr[i-left] += 1;
} else {
cnt_arr[i-left] += 2;
}
}
}
}
// 약수의 개수에 따라 값 계산
for(let s = left; s<=right; s++) {
if (cnt_arr[s-left]%2==0) {
answer += s;
} else {
answer -= s;
}
}
return answer;
}
// * 제곱근이 정수면 약수의 개수가 홀수다.
2. k번째 수
function solution(array, commands) {
var answer = [];
let start = 0;
let end = 0;
let idx = 0;
let res = 0;
for(let i=0; i<commands.length; i++) {
start = commands[i][0]-1;
end = commands[i][1];
idx = commands[i][2]-1;
res = array.slice(start, end).sort(function(a, b) {
return a-b;
});
answer.push(res[idx]);
}
return answer;
}
3. 두 개 뽑아서 더하기
function solution(numbers) {
var answer = [];
let arr = [];
let res = 0;
for(let i=0; i<numbers.length; i++) {
numbers.slice(i+1).forEach( data => {
res = numbers[i]+data;
if(!arr.includes(res)) {
arr.push(res);
}
});
}
answer = arr.sort(function (a,b) {return a-b});
return answer;
}
4. 과일 장수
function solution(k, m, score) {
var answer = 0;
let len = parseInt(score.length/m);
let arr = [];
let start = 0;
let end = m;
// 내림차순 정렬
score.sort(function(a,b) { return b-a });
for(let i=0; i<len; i++) {
arr = score.slice(start, end);
answer += Number(arr[m-1])*m; // 각 배열의 최솟값 추출
start += m;
end += m;
}
return answer;
}
728x90
'Algorithm > Javascript' 카테고리의 다른 글
[프로그래머스] 230922 코딩테스트 연습 (0) | 2023.09.22 |
---|---|
[프로그래머스] 230920 코딩테스트 연습 (0) | 2023.09.20 |
[프로그래머스] 230919 코딩테스트 연습 (0) | 2023.09.19 |
[프로그래머스] 230918 코딩테스트 연습 (0) | 2023.09.18 |
[프로그래머스] 230915 코딩테스트 연습 (0) | 2023.09.18 |
댓글