🗃️javascript/프로그래머스

숫자의 표현(Lv.2)[]

하얀성 2023. 3. 29. 08:35

<설계. 1차시도>

21

21

11 10

3

짝이든 홀이든 (나머지 있는 경우)
n%i == i*0.5 

홀수로 나누면 떨어져야 함.
-> 홀수로 나누면 떨어지는 건 홀수뿐임.

짝수로 나누면? 
2 / 17

몫(짝수) + 몫 * 0.5 = 나눈 값 
for(i){if()cnt++}

4(i) + 4 * 0.5
 
1 2 3 4 10
2 3 4 5 14
3 4 5 6 18
7 8 9 10 34 
10 11 12 13 46
24

3 8 = 24

7, 8, 9

15 / 6
2 3

0 1 2 3 4 5 

 

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
function solution(n) {
    let cnt = 0;
    for(let i = 0 ; i<=n; i++){
       if(i % 2 === 0){ // 몫이 짝수라면
           if(n%i === i*0.5 && n/i >= n%i ){
               cnt++;   
           }
       }else{// 몫이 홀수라면
           if(n % i === 0 && i != n){ // 나누어 떨어지면 ok
               cnt++;  
           } 
       }
    }
    return cnt
}
cs

 


다시풀어보기

"주어진 자연수를 연속되는 자연수들의 합으로 표현할 수 있는 방법의 수는 주어진 자연수의 약수 중에서 홀수인 수의 개수와 같다."

 

<윗 내용 참고 제출답안>

function solution(n) {
    let many = [];
    for(let i =1; i<=n; i++){
        if(n % i == 0 && i % 2 != 0) {
          many.push(i)  
        }
    }
    return many.length
}