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

์•Œ๊ณ ๋ฆฌ์ฆ˜(5) : ์ˆ˜๋ฐ•์ˆ˜๋ฐ•์ˆ˜๋ฐ•์ˆ˜๋ฐ•์ˆ˜๋ฐ•์ˆ˜? _ Lv.1

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

โญ๏ธ ์•Œ๊ณ ๋ฆฌ์ฆ˜(5) : ์ˆ˜๋ฐ•์ˆ˜๋ฐ•์ˆ˜๋ฐ•์ˆ˜๋ฐ•์ˆ˜๋ฐ•์ˆ˜? _ Lv.1 โญ๏ธ


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

๐Ÿงฉ ๊ธธ์ด๊ฐ€ n์ด๊ณ , "์ˆ˜๋ฐ•์ˆ˜๋ฐ•์ˆ˜๋ฐ•์ˆ˜...."์™€ ๊ฐ™์€ ํŒจํ„ด์„ ์œ ์ง€ํ•˜๋Š” ๋ฌธ์ž์—ด์„ ๋ฆฌํ„ดํ•˜๋Š” ํ•จ์ˆ˜, solution์„ ์™„์„ฑํ•˜์„ธ์š”.
๐Ÿงฉ ์˜ˆ๋ฅผ ๋“ค์–ด n์ด 4์ด๋ฉด "์ˆ˜๋ฐ•์ˆ˜๋ฐ•"์„ ๋ฆฌํ„ดํ•˜๊ณ  3์ด๋ผ๋ฉด "์ˆ˜๋ฐ•์ˆ˜"๋ฅผ ๋ฆฌํ„ดํ•˜๋ฉด ๋ฉ๋‹ˆ๋‹ค.
๐Ÿ”’ ์ œํ•œ ์กฐ๊ฑด : n์€ ๊ธธ์ด 10,000์ดํ•˜์ธ ์ž์—ฐ์ˆ˜์ž…๋‹ˆ๋‹ค.

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

๐Ÿ’ก ๋ฌธ์ž๊ฐ€ ๋ฐ˜๋ณต๋˜์—ˆ์„ ๋•Œ, ๋ฐ˜๋ณต๋œ ๋ฌธ์ž์—ด์˜ ๊ธธ์ด๊ฐ€ n์ด ๋˜๋„๋ก ๋ถ€๋ถ„ ์ถœ๋ ฅํ•ด๋ณด์ž.

function solution(n) {
    return "์ˆ˜๋ฐ•".repeat(n).substring(0, n);
}
console.log(solution(n))

   ___ ์ฐธ๊ณ ํ•˜๊ธฐ ___
  `1   String.prototype.repeat( ) : ๋ฌธ์ž์—ด์„ ์ฃผ์–ด์ง„ ํšŸ์ˆ˜๋งŒํผ ๋ฐ˜๋ณตํ•ด ๋ถ™์ธ ์ƒˆ๋กœ์šด ๋ฌธ์ž์—ด์„ ๋ฐ˜ํ™˜ํ•ฉ๋‹ˆ๋‹ค.
  `2   String.prototype.substring( ) : string ๊ฐ์ฒด์˜ ์‹œ์ž‘ ์ธ๋ฑ์Šค๋กœ๋ถ€ํ„ฐ ์ข…๋ฃŒ ์ธ๋ฑ์Šค ์ „๊นŒ์ง€ ๋ฌธ์ž์—ด์˜ ๋ถ€๋ถ„ ๋ฌธ์ž์—ด์„ ๋ฐ˜ํ™˜ํ•ฉ๋‹ˆ๋‹ค.

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

# 1) slice( ) ํ™œ์šฉํ•˜๊ธฐ

let waterMelon = n => "์ˆ˜๋ฐ•".repeat(n).slice(0, n);
console.log(waterMelon(n))      // ํ™”์‚ดํ‘œ ํ•จ์ˆ˜, function ์ƒ๋žต, ๊ด„ํ˜ธ ์ƒ๋žต, return ์ƒ๋žต

   ___ ์ฐธ๊ณ ํ•˜๊ธฐ ___
  `1   String.prototype.slice( ) : ๋ฌธ์ž์—ด์˜ ์ผ๋ถ€๋ฅผ ์ถ”์ถœํ•˜๋ฉด์„œ ์ƒˆ๋กœ์šด ๋ฌธ์ž์—ด์„ ๋ฐ˜ํ™˜ํ•ฉ๋‹ˆ๋‹ค.
                                                     ๋ฌธ๋ฒ• โ˜› str.slice(beginIndex, endIndex)
                                                     0๋ถ€ํ„ฐ ์‹œ์ž‘ํ•˜๋Š” ์ถ”์ถœ ์‹œ์ž‘์ ์ธ index๋ถ€ํ„ฐ ์ถ”์ถœ ์ข…๋ฃŒ์  ์ธ๋ฑ์Šค์˜ ์ง์ „๊นŒ์ง€ ์ถ”์ถœ๋ฉ๋‹ˆ๋‹ค.

 

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

function waterMelon(n){
    let result = "";

        for(let i=0; i<n; i++) {
            result += i % 2 == 0 ? "์ˆ˜" : "๋ฐ•";
    }
    return result;
}
console.log(waterMelon(n))

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

 

# 3) repeat( )๊ณผ Math.ceil( ), substr( ) ํ™œ์šฉํ•˜๊ธฐ

function waterMelon(n){
    return "์ˆ˜๋ฐ•".repeat( Math.ceil(n) ).substr(0, n);
}
console.log(waterMelon(n))

   ___ ์ฐธ๊ณ ํ•˜๊ธฐ ___
  `1   Math.ceil( ) : ์ฃผ์–ด์ง„ ์ˆซ์ž๋ณด๋‹ค ํฌ๊ฑฐ๋‚˜ ๊ฐ™์€ ์ˆซ์ž ์ค‘ ๊ฐ€์žฅ ์ž‘์€ ์ˆซ์ž๋ฅผ integer ๋กœ ๋ฐ˜ํ™˜ํ•ฉ๋‹ˆ๋‹ค. โ˜› ์˜ฌ๋ฆผ
  `2   String.prototype.substr( ) : ์‹œ์ž‘ ์œ„์น˜๋ถ€ํ„ฐ ๊ธธ์ด๊ฐ’ ๋งŒํผ์˜ ๋ฌธ์ž์—ด์„ ์ถ”์ถœํ•˜์—ฌ ๋ฐ˜ํ™˜ํ•ฉ๋‹ˆ๋‹ค. โ˜› ์›น ํ‘œ์ค€์—์„œ ์—†์–ด์กŒ์œผ๋‚˜ ์•„์ง ์‚ฌ์šฉ ๊ฐ€๋Šฅํ•ฉ๋‹ˆ๋‹ค.

 

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

function waterMelon(n){
    let result = "",
        x = n;
  
    while(n--){
      result += ( x - n ) % 2 == 0 ? '๋ฐ•':'์ˆ˜';
    }
    return result;
}
console.log(waterMelon(n))

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

 

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

function waterMelon(n){
    let arr = [];
    const su = '์ˆ˜';
    const bak = '๋ฐ•';

    for(let i=0; i<n; i+=1){

        if ( i % 2 === 0 ){
            arr.push(su);
        } else {
            arr.push(bak);
        }
    }
    let fruit = arr.join('');
    return fruit;
}
console.log(waterMelon(n))

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

 

# 6) key๊ฐ’๊ณผ map( ), join( ) ํ™œ์šฉํ•˜๊ธฐ

function waterMelon(n){
    return [...Array(n).keys()].map( i => {

        if (i % 2 === 0) return "์ˆ˜";
        else return "๋ฐ•";

    }).join('');
}
console.log(waterMelon(n))

   ___ ์ฐธ๊ณ ํ•˜๊ธฐ ___
  `1   ...Array(n) : ํŽผ์นจ ์—ฐ์‚ฐ์ž โ˜› ๋ฐฐ์—ด ๋ณต์‚ฌ
  `2   Array.prototype.keys( ) : ๋ฐฐ์—ด์˜ ๊ฐ ์ธ๋ฑ์Šค๋ฅผ ํ‚ค ๊ฐ’์œผ๋กœ ๊ฐ€์ง€๋Š” ์ƒˆ๋กœ์šด Array Iterator ๊ฐ์ฒด๋ฅผ ๋ฐ˜ํ™˜ํ•ฉ๋‹ˆ๋‹ค.
  `3   Array.prototype.map( ) : ๋ฐฐ์—ด ๋‚ด์˜ ๋ชจ๋“  ์š”์†Œ ๊ฐ๊ฐ์— ๋Œ€ํ•ด, ์ฃผ์–ด์ง„ ํ•จ์ˆ˜๋ฅผ ํ˜ธ์ถœํ•œ ๊ฒฐ๊ณผ๋ฅผ ๋ชจ์•„ ์ƒˆ๋กœ์šด ๋ฐฐ์—ด์„ ๋ฐ˜ํ™˜ํ•ฉ๋‹ˆ๋‹ค.

728x90
๋ฐ˜์‘ํ˜•

๋Œ“๊ธ€