코딩테스트/LV. 1
LV. 1 :: 약수의 개수와 덧셈
KUROMI98
2023. 1. 29. 05:29
https://school.programmers.co.kr/learn/courses/30/lessons/77884
프로그래머스
코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.
programmers.co.kr
function solution(left, right)
{
var yaksu = [];
var num = 0;
for (j=left; j<=right; j++)
{
for (i=1; i<=j; i++)
{
if (j%i==0) {yaksu.push(i); num++;}
// n이 i로 나눠떨어진다면 i를 answer에다가 집어넣어준다.
}
yaksu.push(0);
}
// yaksu 는 [1,13,0,1,2,7,14,0,1,3,5,15,0,1,2,4,8,16,0,1,17,0]
// -------------------------------------------------------------
var plussum = 0;
var minussum = 0;
num = 0; // num을 초기화해준다.
for (i=0; i<yaksu.length; i++)
{ // yaksu의 전체 원소에 대하여
num += 1; // num에 1을 더해준다
if (yaksu[i] == 0) // 만약에 0을 마주한다면
{
if ((num-1)%2==0) plussum += yaksu[i-1];
// num-1이 짝수일 경우 0 직전의 원소를 plussum에 넣어준다.
// (왜 num-1이냐면 0을 만나면서 num에 1이 더해졌기 때문)
else minussum += yaksu[i-1];
// num-1이 홀수일 경우 0 직전의 원소를 minussum에 넣어준다.
num = 0;
// 다시 num을 0으로 초기화해준다.
}
}
return plussum - minussum;
}
241021
function solution(left, right) {
let arr = [];
for (i=left; i<=right; i++){
if (yaksuCount(i).length % 2 ==0){ arr.push(i) }
else { arr.push(-i) }
}
return arr.reduce((a,b)=>a+b, 0)
}
let yaksuCount = (n) => {
let yaksuArray = [];
for (j=1; j<=n; j++) {
if (n%j==0){
yaksuArray.push(j)
}
}
return yaksuArray;
}