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

์•Œ๊ณ ๋ฆฌ์ฆ˜(13) : ์ •์ˆ˜ ๋‚ด๋ฆผ์ฐจ์ˆœ์œผ๋กœ ๋ฐฐ์น˜ํ•˜๊ธฐ _ Lv.1

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

โญ๏ธ ์•Œ๊ณ ๋ฆฌ์ฆ˜(13) : ์ •์ˆ˜ ๋‚ด๋ฆผ์ฐจ์ˆœ์œผ๋กœ ๋ฐฐ์น˜ํ•˜๊ธฐ _ Lv.1 โญ๏ธ


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

๐Ÿงฉ ํ•จ์ˆ˜ solution์€ ์ •์ˆ˜ n์„ ๋งค๊ฐœ๋ณ€์ˆ˜๋กœ ์ž…๋ ฅ๋ฐ›์Šต๋‹ˆ๋‹ค.
๐Ÿงฉ n์˜ ๊ฐ ์ž๋ฆฟ์ˆ˜๋ฅผ ํฐ ๊ฒƒ๋ถ€ํ„ฐ ์ž‘์€ ์ˆœ์œผ๋กœ ์ •๋ ฌํ•œ ์ƒˆ๋กœ์šด ์ •์ˆ˜๋ฅผ ๋ฆฌํ„ดํ•ด์ฃผ์„ธ์š”.
๐Ÿงฉ ์˜ˆ๋ฅผ ๋“ค์–ด n์ด 118372๋ฉด 873211์„ ๋ฆฌํ„ดํ•˜๋ฉด ๋ฉ๋‹ˆ๋‹ค.
๐Ÿ”’ ์ œํ•œ ์กฐ๊ฑด : n์€ 1์ด์ƒ 8000000000 ์ดํ•˜์ธ ์ž์—ฐ์ˆ˜์ž…๋‹ˆ๋‹ค.

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

๐Ÿ’ก ์ •์ˆ˜ n ์„ ๋ฌธ์ž์—ด ๋ฐฐ์—ด๋กœ ๋‚˜๋ˆˆ ๋’ค์— ๊ฐ ์š”์†Œ์— ๋Œ€ํ•ด ๋‚ด๋ฆผ์ฐจ์ˆœ์œผ๋กœ ์ •๋ ฌํ•˜๊ณ , ๋‚˜๋ˆˆ ์š”์†Œ๋“ค์„ ๋‹ค์‹œ ํ•ฉ์ณ๋ณด์ž.

function solution(n) {
    let change = n + "";                // ์ˆซ์ž + "" ๋นˆ ๋ฌธ์ž์—ด -> ๋ฌธ์ž์—ด๋กœ ๋ฐ”๊พธ๊ธฐ
    let answer = change.split('');

    return Number(answer.sort((a, b) => b - a).join(''));           // ๋ฐฐ์—ด์˜ ์ˆซ์„œ๋ฅผ ๋‚ด๋ฆผ์ฐจ์ˆœ์œผ๋กœ ์ •๋ ฌํ•˜๊ณ , ํ•ฉ์ณ์„œ ๋ฐ˜ํ™˜ํ•˜๊ธฐ
}
// ์œ„์˜ ์‹์„ ๋” ์งง๊ฒŒ ์ค„์ด๋ฉด,
// function solution(n) { return (n + '').split('').sort((a, b) => b - a).join('') * 1; }
console.log(solution("118372"))

   ___ ์ฐธ๊ณ ํ•˜๊ธฐ ___
  `1   String.prototype.split( ) : ๋ถ„ํ•  ๊ธฐ์ค€์— ๋”ฐ๋ผ ๋ฌธ์ž์—ด์„ ๋ถ„ํ• ํ•˜์—ฌ ๋ฐฐ์—ด๋กœ ๋ฐ˜ํ™˜ํ•ฉ๋‹ˆ๋‹ค.
  `2   Array.prototype.sort( ) : ๋ฐฐ์—ด์˜ ์š”์†Œ๋ฅผ ์ ์ ˆํ•œ ์œ„์น˜์— ์ •๋ ฌํ•œ ํ›„ ๊ทธ ๋ฐฐ์—ด์„ ๋ฐ˜ํ™˜ํ•ฉ๋‹ˆ๋‹ค. ๊ธฐ๋ณธ ์ •๋ ฌ ์ˆœ์„œ๋Š” ๋ฌธ์ž์—ด์˜ ์œ ๋‹ˆ์ฝ”๋“œ ์ฝ”๋“œ ํฌ์ธํŠธ๋ฅผ ๋”ฐ๋ฆ…๋‹ˆ๋‹ค.
  `3   Array.prototype.join( ) : ๋ฐฐ์—ด์˜ ๋ชจ๋“  ์š”์†Œ๋ฅผ ๊ฒฐํ•ฉํ•˜์—ฌ ํ•˜๋‚˜์˜ ๋ฌธ์ž์—ด๋กœ ๋ฐ˜ํ™˜ํ•ฉ๋‹ˆ๋‹ค.
                                                  ๋ฐ˜ํ™˜๊ฐ’์œผ๋กœ ๋‚˜์˜ค๋Š” ๋ฌธ์ž์—ด์˜ ๊ตฌ๋ถ„์ž(๋„์–ด์“ฐ๊ธฐ, ํŠน์ˆ˜๋ฌธ์ž, - ๋‹ค์‹œ, ๋“ฑ)์„ ์ง€์ •ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

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

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

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

    do{
        nums.push( n % 10 );            // nums์— ์ผ์˜ ์ž๋ฆฌ ๊ฐ’์ด ์ €์žฅ๋จ
        n = Math.floor( n / 10 );
    } while( n > 0 )                    // nums = [2, 7, 3, 8, 1, 1]

    return nums.sort((a, b) => b - a ).join('') *1;         // ํ˜•๋ณ€ํ™˜์„ ์œ„ํ•ด *1 ํ•ด์คŒ

    return (n + "").split('').sort((a, b) => b - a ).join('') *1;
}
console.log(solution("118372"))

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

 

# 2) ์—ฌ๋Ÿฌ ๊ฐ€์ง€ ๋ฉ”์„œ๋“œ๋ฅผ ๋ณตํ•ฉ์ ์œผ๋กœ ํ™œ์šฉํ•œ ๋ฐฉ๋ฒ•

function solution(n) {
    let r = 0,
        e = 0,
        arr = [];

    do {
        e = n % 10;
    
        // ์ •๋ ฌํ•˜๊ธฐ
        if (arr.length == 0) arr.push(e);

        else for (let i=0, len=arr.length; i<len; i++) {

            if (arr[i] <= e) { arr.splice(i, 0, e); break; }

            if (i == len -1) arr.push(e);
        }
    } while (n = Math.floor( n / 10 ), n > 0);

    return parseInt(arr.join(""));
}
console.log(solution("118372"))

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

 

# 3) while๋ฌธ๊ณผ pop( ) ํ™œ์šฉํ•˜๊ธฐ

function solution(n) {
    let answer = 0;

    n += '';
    n = n.split('').sort();

    while (n.length > 0) {
        answer += n.pop();
    }
    return parseInt(answer);
}
console.log(solution("118372"))

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

728x90
๋ฐ˜์‘ํ˜•

๋Œ“๊ธ€