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

์•Œ๊ณ ๋ฆฌ์ฆ˜(9) : ๋‚˜๋จธ์ง€๊ฐ€ 1์ด ๋˜๋Š” ์ˆ˜ ์ฐพ๊ธฐ _ Lv.1

by oranssy 2022. 11. 4.
728x90
๋ฐ˜์‘ํ˜•

โญ๏ธ ์•Œ๊ณ ๋ฆฌ์ฆ˜(9) : ๋‚˜๋จธ์ง€๊ฐ€ 1์ด ๋˜๋Š” ์ˆ˜ ์ฐพ๊ธฐ _ Lv.1 โญ๏ธ


01. ๋ฌธ์ œ ์„ค๋ช…

๐Ÿงฉ ์ž์—ฐ์ˆ˜ n์ด ๋งค๊ฐœ๋ณ€์ˆ˜๋กœ ์ฃผ์–ด์ง‘๋‹ˆ๋‹ค.
๐Ÿงฉ n์„ x๋กœ ๋‚˜๋ˆˆ ๋‚˜๋จธ์ง€๊ฐ€ 1์ด ๋˜๋„๋ก ํ•˜๋Š” ๊ฐ€์žฅ ์ž‘์€ ์ž์—ฐ์ˆ˜ x๋ฅผ return ํ•˜๋„๋ก solution ํ•จ์ˆ˜๋ฅผ ์™„์„ฑํ•ด์ฃผ์„ธ์š”.
๐Ÿงฉ ๋‹ต์ด ํ•ญ์ƒ ์กด์žฌํ•จ์€ ์ฆ๋ช…๋  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
๐Ÿงฉ ์˜ˆ๋ฅผ ๋“ค์–ด 10์„ 3์œผ๋กœ ๋‚˜๋ˆˆ ๋‚˜๋จธ์ง€๊ฐ€ 1์ด๊ณ , 3๋ณด๋‹ค ์ž‘์€ ์ž์—ฐ์ˆ˜ ์ค‘์—์„œ ๋ฌธ์ œ์˜ ์กฐ๊ฑด์„ ๋งŒ์กฑํ•˜๋Š” ์ˆ˜๊ฐ€ ์—†์œผ๋ฏ€๋กœ, 3์„ return ํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.
๐Ÿงฉ ์˜ˆ๋ฅผ ๋“ค์–ด 12๋ฅผ 11๋กœ ๋‚˜๋ˆˆ ๋‚˜๋จธ์ง€๊ฐ€ 1์ด๊ณ , 11๋ณด๋‹ค ์ž‘์€ ์ž์—ฐ์ˆ˜ ์ค‘์—์„œ ๋ฌธ์ œ์˜ ์กฐ๊ฑด์„ ๋งŒ์กฑํ•˜๋Š” ์ˆ˜๊ฐ€ ์—†์œผ๋ฏ€๋กœ, 11์„ return ํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.
๐Ÿ”’ ์ œํ•œ ์กฐ๊ฑด : 3 ≤ n ≤ 1,000,000

02. " solution.js " ๋ฌธ์ œ ํ’€์–ด๋ณด๊ธฐ

๐Ÿ’ก n ์„ i ๋กœ ๋‚˜๋ˆด์„ ๋•Œ ๋‚˜๋จธ์ง€๊ฐ€ 1์ด ๋  ๋•Œ, i์˜ ๊ฐ’์„ ๋ฐ˜ํ™˜ํ•˜๋Š” ์กฐ๊ฑด๋ฌธ์„ ๋ฐ˜๋ณต์‹œ์ผœ๋ณด์ž.

function solution(n) {
    for (let i=2; i<n; i++) {
        if (n % i === 1)
            return i;
    }
}
console.log(solution(10))
console.log(solution(12))

   ___ ์ฐธ๊ณ ํ•˜๊ธฐ ___
  `1   for๋ฌธ : ๊ด„ํ˜ธ ์•ˆ์˜ ์‹์„ ๋ฐ˜๋ณต ์‹คํ–‰ํ•ฉ๋‹ˆ๋‹ค.
  `2   if๋ฌธ : if๋ฌธ์€ ์ง€์ •ํ•œ ์กฐ๊ฑด์ด ์ฐธ์ธ ๊ฒฝ์šฐ ๋ช…๋ น๋ฌธ(statement)์„ ์‹คํ–‰ํ•ฉ๋‹ˆ๋‹ค. ์กฐ๊ฑด์ด ๊ฑฐ์ง“์ธ ๊ฒฝ์šฐ ๋˜ ๋‹ค๋ฅธ ๋ช…๋ น๋ฌธ์ด ์‹คํ–‰๋  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

03. ๋‹ค๋ฅธ ํ’€์ด ์•Œ์•„๋ณด๊ธฐ

# 1) ์‚ผํ•ญ ์—ฐ์‚ฐ์ž ํ™œ์šฉํ•˜๊ธฐ

function solution( n, x = 2 ) {
    return n % x === 1 ? x : solution( n, x + 1 );
}           // ์กฐ๊ฑด์„ ๋งŒ์กฑํ•  ๋•Œ๊นŒ์ง€ ๋ฐ˜๋ณต๋จ
console.log(solution(10))
console.log(solution(12))

   ___ ์ฐธ๊ณ ํ•˜๊ธฐ ___
  `1   ์กฐ๊ฑด(์‚ผํ•ญ) ์—ฐ์‚ฐ์ž : ์•ž์—์„œ๋ถ€ํ„ฐ ์กฐ๊ฑด๋ฌธ, ๋ฌผ์Œํ‘œ(?), ์กฐ๊ฑด๋ฌธ์ด ์ฐธ(truthy)์ผ ๊ฒฝ์šฐ ์‹คํ–‰ํ•  ํ‘œํ˜„์‹, ์ฝœ๋ก (:), ์กฐ๊ฑด๋ฌธ์ด ๊ฑฐ์ง“(falsy)์ผ ๊ฒฝ์šฐ ์‹คํ–‰ํ•  ํ‘œํ˜„์‹์ด ๋ฐฐ์น˜๋ฉ๋‹ˆ๋‹ค.

 

# 2) while๋ฌธ ํ™œ์šฉํ•˜๊ธฐ

function solution( n, x = 1 ) {    
    while (x++) {
        if ( n % x === 1 ) {
            return x;
        }
    }
}
console.log(solution(10))
console.log(solution(12))

   ___ ์ฐธ๊ณ ํ•˜๊ธฐ ___
  `1   while๋ฌธ : ์กฐ๊ฑด๋ฌธ์ด ์ฐธ์ผ ๋•Œ ์‹คํ–‰๋˜๋Š” ๋ฐ˜๋ณต๋ฌธ์ž…๋‹ˆ๋‹ค.
          ๋ฐ˜๋ณต ์‹œ์ž‘ ์ „์— ์กฐ๊ฑด๋ฌธ์ด ์ฐธ, ๊ฑฐ์ง“์„ ํŒ๋‹จ๋ฐ›์œผ๋ฏ€๋กœ, ์กฐ๊ฑด๋ฌธ์ด ๊ฑฐ์ง“์ผ ๊ฒฝ์šฐ, ๋ฌธ์žฅ์€ while ๋ฐ˜๋ณต๋ฌธ ํ›„๋กœ ๊ทธ๋ƒฅ ๋„˜์–ด๊ฐ‘๋‹ˆ๋‹ค.

 

# 3) push( )์™€ Math.min( ) ํ™œ์šฉํ•˜๊ธฐ

function solution(n) {
    let answer = [];

    for (let i = 1; i<=n; i++) {
        if (n % i === 1) {
            answer.push(i);
        }
    }
    return Math.min(...answer);
}
console.log(solution(10))
console.log(solution(12))

   ___ ์ฐธ๊ณ ํ•˜๊ธฐ ___
  `1   Array.prototype.push( ) : ๋ฐฐ์—ด์˜ ๋์— ํ•˜๋‚˜ ์ด์ƒ์˜ ์š”์†Œ๋ฅผ ์ถ”๊ฐ€ํ•˜๊ณ , ๋ฐฐ์—ด์˜ ์ƒˆ๋กœ์šด ๊ธธ์ด๋ฅผ ๋ฐ˜ํ™˜ํ•ฉ๋‹ˆ๋‹ค.
  `2   Math.min( ) : ์ฃผ์–ด์ง„ ์ˆซ์ž๋“ค ์ค‘ ๊ฐ€์žฅ ์ž‘์€ ๊ฐ’์„ ๋ฐ˜ํ™˜ํ•ฉ๋‹ˆ๋‹ค.

728x90
๋ฐ˜์‘ํ˜•

๋Œ“๊ธ€