๋ณธ๋ฌธ ๋ฐ”๋กœ๊ฐ€๊ธฐ

ํ”„์—” ๊ณต๋ถ€/๐Ÿซง ์•Œ๊ณ ๋ฆฌ์ฆ˜ ๊ณต๋ถ€

[์•Œ๊ณ ๋ฆฌ์ฆ˜ || ํ”„๋กœ๊ทธ๋ž˜๋จธ์Šค] ์ˆซ์ž์˜ ํ‘œํ˜„

728x90

 

function solution(n) {
    let count = 1;
    if (n == 1) {return 1}
    for (let i = 1; i <= Math.ceil(n / 2); i++) {
        let sum = 0;
        let start = i;
        while (sum < n) {
            sum += start;
            if (sum === n) count++;
            start++;
        }
    }
    return count;
}

์ด๋ ‡๊ฒŒ ์ •์งํ•˜๊ฒŒ(?) ํ’€์—ˆ๋Š”๋ฐ, 

else ๋ฅผ ์“ฐ์ง€ ์•Š์•˜์„ ๋• ์‹œ๊ฐ„ ์ดˆ๊ณผ๋กœ ํ†ต๊ณผ๋˜์ง€ ๋ชปํ–ˆ์—ˆ๋‹ค. ???

์•„๋‹ˆ๋„ค ๋‹ค์‹œ ํ•ด๋ณด๋‹ˆ ํ†ต๊ณผ ๋˜๋„ค.. ???

 

๊ทธ๋ฆฌ๊ณ  n ์ด 1 ์ผ ๊ฒฝ์šฐ์—๋Š” ๋ฐ˜๋ณต๋ฌธ์„ ๋Œ ํ•„์š”๊ฐ€ ์—†๊ธฐ ๋•Œ๋ฌธ์— ๋ฐ”๋กœ 1์„ ์ถœ๋ ฅํ•ด์คฌ๋‹ค.

 

 

์˜ค๋Š˜๋„ ๋น„๋‚œ์ขŒ ์ฝ”๋“œ๋ฅผ ์Œฅ์Œฅ ํ•ด๋ณด์ž

 

function solution(n) {
    let answer = 0;
    for (let k = 1; k <= n/2 + 1; k++) 
        if ((n/k - (k-1)/2) % 1 === 0 && n/k - (k-1)/2 > 0) answer++;
    return answer;
}
ํ™€์ˆ˜์˜ ๊ฒฝ์šฐ, ์•ฝ์ˆ˜๋Š” ํ™€์ˆ˜ ๋ฐ–์— ์•ˆ๋‚˜์˜ด. 15์˜ ์•ฝ์ˆ˜๋Š” 1,3,5, 15. ์•ฝ์ˆ˜๋ฅผ ์ด์šฉํ•ด์„œ ์—ฐ์†๋œ ์ˆ˜์˜ ํ•ฉ์ด 15๊ฐ€ ๋‚˜์˜ค๋„๋ก ํ•  ์ˆ˜๋„ ์žˆ์Œ. 15=1+2+3+4+5 (์ค‘๊ฐ„๊ฐ’ 3) 3x5 / 15=4+5+6 (์ค‘๊ฐ„๊ฐ’ 5) 5x3 / 15=7+8 (์—ฐ์†๋œ ์ˆ˜) 7+8 - ํ™€์ˆ˜์ธ ๊ฒฝ์šฐ ๋ฌด์กฐ๊ฑด ๊ฐ€๋Šฅ. / 15=15 / ์ค‘๊ฐ„๊ฐ’์ด 3์ธ ๊ฒฝ์šฐ, ์ค‘๊ฐ„๊ฐ’์ด 5์ธ ๊ฒฝ์šฐ, ์—ฐ์†๋œ ์ˆ˜(7, 8), 15(n) ํ•ด์„œ 4๊ฐœ์ธ๋ฐ, ์ด๊ฒŒ ๊ณต๊ต๋กญ๊ฒŒ ํ™€์ˆ˜์˜ ์•ฝ์ˆ˜ ์ˆ˜์™€ ๊ฐ™์Œ. ๊ทธ๋ฆฌ๊ณ  ์ง์ˆ˜์˜ ๊ฒฝ์šฐ๋Š” ํ™€์ˆ˜์˜ ์—ฐ์žฅ์„ ์ด๋ผ๊ณ  ๋ณด๋ฉด ๋จ. n=30์ธ ๊ฒฝ์šฐ, 30์˜ ์•ฝ์ˆ˜๋Š” 1, 2, 3, 5, 6, 10, 15, 30์ž„. 30=4 + 5 + 6 + 7 + 8 (์ค‘๊ฐ„๊ฐ’ 3์˜ ์—ฐ์žฅ) 2x3x5 / 30=9 + 10 + 11 (์ค‘๊ฐ„๊ฐ’ 5์˜ ์—ฐ์žฅ) 2x5x3 / 30=6+7+8+9 (์—ฐ์†๋œ ๋‘ ์ˆ˜์˜ ์—ฐ์žฅ) 2x(7+8) / 30=30 / ๊ฒฐ๊ณผ์ ์œผ๋กœ n์˜ ํ™€์ˆ˜ ์•ฝ์ˆ˜ ๊ฐœ์ˆ˜๋งŒ ๊ตฌํ•ด๋„ ๋‹ต์ด๋ž‘ ๊ฐ™์Œ.

์กฐ๊ธˆ ๋” ์ˆ˜ํ•™์ ์œผ๋กœ ๋“ค์–ด๊ฐ€๋ฉด ์ด๋ ‡๊ฒŒ ๊ทœ์น™์„ฑ์ด ๋ณด์ธ๋‹ค๊ณ  ํ•œ๋‹ค. 

์‹ฑ๊ธฐ๋ฐฉ๊ธฐ ์ˆ˜ํ•™์˜ ์„ธ๊ณ„~

 

 

728x90
๋ฐ˜์‘ํ˜•