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

์•Œ๊ณ ๋ฆฌ์ฆ˜(1) : ์ž์—ฐ์ˆ˜ ๋’ค์ง‘์–ด ๋ฐฐ์—ด๋กœ ๋งŒ๋“ค๊ธฐ _ Lv.1

by oranssy 2022. 10. 28.
728x90
๋ฐ˜์‘ํ˜•

โญ๏ธ ์•Œ๊ณ ๋ฆฌ์ฆ˜(1) : ์ž์—ฐ์ˆ˜ ๋’ค์ง‘์–ด ๋ฐฐ์—ด๋กœ ๋งŒ๋“ค๊ธฐ _ Lv.1 โญ๏ธ


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

๐Ÿงฉ ์ž์—ฐ์ˆ˜ n์„ ๋’ค์ง‘์–ด ๊ฐ ์ž๋ฆฌ ์ˆซ์ž๋ฅผ ์›์†Œ๋กœ ๊ฐ€์ง€๋Š” ๋ฐฐ์—ด ํ˜•ํƒœ๋กœ ๋ฆฌํ„ดํ•ด์ฃผ์„ธ์š”.
๐Ÿงฉ ์˜ˆ๋ฅผ ๋“ค์–ด, n์ด 12345์ด๋ฉด [5, 4, 3, 2, 1] ์„ ๋ฆฌํ„ดํ•ฉ๋‹ˆ๋‹ค.
๐Ÿ”’ ์ œํ•œ ์กฐ๊ฑด : n์€ 10,000,000,000 ์ดํ•˜์ธ ์ž์—ฐ์ˆ˜์ž…๋‹ˆ๋‹ค.

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

๐Ÿ’ก ๋ฌธ์ž์—ด 12345๋ฅผ ํ•˜๋‚˜์”ฉ ๋ฐฐ์—ด๋กœ ๋งŒ๋“ค์–ด์ฃผ๊ณ  ์ˆซ์ž๋กœ ๋งŒ๋“ค์–ด์ค€ ๋’ค์—, ์ˆœ์„œ๋ฅผ ๋’ค์ง‘์–ด์ฃผ์ž.

const flip = [12345];

function solution(n) {
    return String(n).split('').map( (x) => Number(x) ).reverse();
}
console.log(solution(flip))

   ___ ์ฐธ๊ณ ํ•˜๊ธฐ ___
  `1   String( ) : ์ˆซ์ž๋ฅผ ๋ฌธ์ž์—ด๋กœ ๋ณ€ํ™˜ํ•˜์—ฌ ๋ฐ˜ํ™˜ํ•ฉ๋‹ˆ๋‹ค.
  `2   String.prototype.split( ) : ๋ถ„ํ•  ๊ธฐ์ค€์— ๋”ฐ๋ผ ๋ฌธ์ž์—ด์„ ๋ถ„ํ• ํ•˜์—ฌ ๋ฐฐ์—ด๋กœ ๋ฐ˜ํ™˜ํ•ฉ๋‹ˆ๋‹ค.
  `3   Array.prototype.map( ) : ๋ฐฐ์—ด ๋‚ด์˜ ๋ชจ๋“  ์š”์†Œ ๊ฐ๊ฐ์— ๋Œ€ํ•ด, ์ฃผ์–ด์ง„ ํ•จ์ˆ˜๋ฅผ ํ˜ธ์ถœํ•œ ๊ฒฐ๊ณผ๋ฅผ ๋ชจ์•„ ์ƒˆ๋กœ์šด ๋ฐฐ์—ด์„ ๋ฐ˜ํ™˜ํ•ฉ๋‹ˆ๋‹ค.
  `4   Number( ) : ๋ฌธ์ž์—ด์„ ์ˆซ์ž๋กœ ๋ณ€ํ™˜ํ•˜์—ฌ ๋ฐ˜ํ™˜ํ•ฉ๋‹ˆ๋‹ค.

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

# 1) do while๋ฌธ๊ณผ push( ), Math.floor( ) ํ™œ์šฉํ•˜๊ธฐ

const flip = [12345];

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

    do {
        arr.push( n % 10 );
        n = Math.floor( n / 10 );
    } while ( n > 0 );

    return arr;
}
console.log(solution(flip))

   ___ ์ฐธ๊ณ ํ•˜๊ธฐ ___
  `1   do ... while ๋ฌธ : ํ…Œ์ŠคํŠธ ์กฐ๊ฑด์ด ๊ฑฐ์ง“์œผ๋กœ ํ‰๊ฐ€๋  ๋•Œ๊นŒ์ง€ ์ง€์ •๋œ ๊ตฌ๋ฌธ์„ ์‹คํ–‰ํ•˜๋Š” ๋ฃจํ”„๋ฅผ ๋งŒ๋“ญ๋‹ˆ๋‹ค.
         ๊ตฌ๋ฌธ์ด ์‹คํ–‰๋œ ๋’ค์— ํ…Œ์ŠคํŠธ ์กฐ๊ฑด์ด ํ‰๊ฐ€๋จ์œผ๋กœ ๊ตฌ๋ฌธ์€ ๋ฌด์กฐ๊ฑด ํ•œ ๋ฒˆ์€ ์‹คํ–‰๋ฉ๋‹ˆ๋‹ค.
  `2   Array.prototype.push( ) : ๋ฐฐ์—ด์˜ ๋งˆ์ง€๋ง‰์— ์ƒˆ๋กœ์šด ์š”์†Œ๋ฅผ ์ถ”๊ฐ€ํ•œ ํ›„, ๋ณ€๊ฒฝ๋œ ๋ฐฐ์—ด์˜ ๊ธธ์ด(๋ฐฐ์—ด์˜ ์ˆ˜)๋ฅผ ๋ฐ˜ํ™˜ํ•ฉ๋‹ˆ๋‹ค.
  `3   Math.floor( ) : ์ฃผ์–ด์ง„ ์ˆซ์ž์™€ ๊ฐ™๊ฑฐ๋‚˜ ์ž‘์€ ์ •์ˆ˜ ์ค‘์—์„œ ๊ฐ€์žฅ ํฐ ์ˆ˜๋ฅผ ๋ฐ˜ํ™˜ํ•ฉ๋‹ˆ๋‹ค. โ˜› ๋‚ด๋ฆผ

 

# 2) for๋ฌธ๊ณผ push( ) ํ™œ์šฉํ•˜๊ธฐ

const flip = [12345];

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

    for (let i = n.length - 1; i >= 0; i--) {
        answer.push(Number( n[i] ));
    }
    return answer;
}
console.log(solution(flip))

   ___ ์ฐธ๊ณ ํ•˜๊ธฐ ___
  `1   for๋ฌธ : ๊ด„ํ˜ธ ์•ˆ์˜ ์‹์„ ๋ฐ˜๋ณต ์‹คํ–‰ํ•ฉ๋‹ˆ๋‹ค.

 

# 3) split( )๊ณผ reverse( ), map( )์„ ํ™œ์šฉํ•œ ๋˜ ๋‹ค๋ฅธ ํ’€์ด

const flip = [12345];

function solution(n) {
    return ( n + "" ).split("").reverse().map( $ => +$ );
}
console.log(solution(flip))

 

# 4) while๋ฌธ๊ณผ parseInt( ), substr( ) ํ™œ์šฉํ•˜๊ธฐ

const flip = [12345];

function solution(n) {
    let answer = [];
    let cnt = 0;
    n += '';
    
    while( cnt < n.length ) {
        cnt++
        answer.push( parseInt( n.substr( n.length - cnt, 1 )));
    }

    return answer;
}
console.log(solution(flip))

   ___ ์ฐธ๊ณ ํ•˜๊ธฐ ___
  `1   while๋ฌธ : ์กฐ๊ฑด๋ฌธ์ด ์ฐธ์ผ ๋•Œ ์‹คํ–‰๋˜๋Š” ๋ฐ˜๋ณต๋ฌธ์ž…๋‹ˆ๋‹ค.
          ๋ฐ˜๋ณต ์‹œ์ž‘ ์ „์— ์กฐ๊ฑด๋ฌธ์ด ์ฐธ, ๊ฑฐ์ง“์„ ํŒ๋‹จ๋ฐ›์œผ๋ฏ€๋กœ, ์กฐ๊ฑด๋ฌธ์ด ๊ฑฐ์ง“์ผ ๊ฒฝ์šฐ, ๋ฌธ์žฅ์€ while ๋ฐ˜๋ณต๋ฌธ ํ›„๋กœ ๊ทธ๋ƒฅ ๋„˜์–ด๊ฐ‘๋‹ˆ๋‹ค.
  `2   parseInt( ) : ๋ฌธ์ž์—ด ์ธ์ž๋ฅผ ์ˆซ์ž๋กœ ๋ณ€๊ฒฝํ•˜์—ฌ ๋ฐ˜ํ™˜ํ•ฉ๋‹ˆ๋‹ค. Number( )์™€ ๊ฐ™์€ ๊ธฐ๋Šฅ์„ ํ•˜๋ฉฐ,
           ์ฐจ์ด์ ์„ ์‚ดํŽด๋ณด์ž๋ฉด Number( )์€ ๋ฌธ์ž์—ด์— ์ˆซ์ž๊ฐ€ ์•„๋‹Œ ๋ฌธ์ž๊ฐ€ ์žˆ์„ ๊ฒฝ์šฐ ๋ฌด์กฐ๊ฑด NaN ๊ฐ’์ด ์ €์žฅ๋˜๊ณ 
           parseInt( )๋Š” ๋ฌธ์ž์—ด์ด ์ˆซ์ž๋กœ ์‹œ์ž‘ํ•˜๊ณ  ๋ฌธ์ž๊ฐ€ ๊ปด์žˆ์„ ๊ฒฝ์šฐ ๋ฌธ์ž ์ „๊นŒ์ง€๋งŒ ์ˆซ์ž๋กœ ํ˜•๋ณ€ํ™˜ ํ›„ ์ €์žฅ๋œ๋‹ค๋Š” ๊ฒƒ.
  `3   String.prototype.substr( ) : ์‹œ์ž‘ ์œ„์น˜๋ถ€ํ„ฐ ๊ธธ์ด๊ฐ’ ๋งŒํผ์˜ ๋ฌธ์ž์—ด์„ ์ถ”์ถœํ•˜์—ฌ ๋ฐ˜ํ™˜ํ•ฉ๋‹ˆ๋‹ค. โ˜› ์›น ํ‘œ์ค€์—์„œ ์—†์–ด์กŒ์œผ๋‚˜ ์•„์ง ์‚ฌ์šฉ ๊ฐ€๋Šฅํ•ฉ๋‹ˆ๋‹ค.

728x90
๋ฐ˜์‘ํ˜•

๋Œ“๊ธ€