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

์•Œ๊ณ ๋ฆฌ์ฆ˜(11) : ์ด์ƒํ•œ ๋ฌธ์ž ๋งŒ๋“ค๊ธฐ _ Lv.1

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

โญ๏ธ ์•Œ๊ณ ๋ฆฌ์ฆ˜(11) : ์ด์ƒํ•œ ๋ฌธ์ž ๋งŒ๋“ค๊ธฐ _ Lv.1 โญ๏ธ


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

๐Ÿงฉ ๋ฌธ์ž์—ด s๋Š” ํ•œ ๊ฐœ ์ด์ƒ์˜ ๋‹จ์–ด๋กœ ๊ตฌ์„ฑ๋˜์–ด ์žˆ์Šต๋‹ˆ๋‹ค. ๊ฐ ๋‹จ์–ด๋Š” ํ•˜๋‚˜ ์ด์ƒ์˜ ๊ณต๋ฐฑ๋ฌธ์ž๋กœ ๊ตฌ๋ถ„๋˜์–ด ์žˆ์Šต๋‹ˆ๋‹ค.
๐Ÿงฉ ๋‹จ์–ด์˜ ์ง์ˆ˜๋ฒˆ์งธ ์•ŒํŒŒ๋ฒณ์€ ๋Œ€๋ฌธ์ž๋กœ, ํ™€์ˆ˜๋ฒˆ์งธ ์•ŒํŒŒ๋ฒณ์€ ์†Œ๋ฌธ์ž๋กœ ๋ฐ”๊พผ ๋ฌธ์ž์—ด์„ ๋ฆฌํ„ดํ•˜๋Š” ํ•จ์ˆ˜, solution์„ ์™„์„ฑํ•˜์„ธ์š”.
๐Ÿงฉ ์˜ˆ๋ฅผ ๋“ค์–ด "try hello world"๋Š” ์„ธ ๋‹จ์–ด "try", "hello", "world"๋กœ ๊ตฌ์„ฑ๋˜์–ด ์žˆ์Šต๋‹ˆ๋‹ค.
๐Ÿงฉ - ๊ฐ ๋‹จ์–ด์˜ ์ง์ˆ˜๋ฒˆ์งธ ๋ฌธ์ž๋ฅผ ๋Œ€๋ฌธ์ž๋กœ, ํ™€์ˆ˜๋ฒˆ์งธ ๋ฌธ์ž๋ฅผ ์†Œ๋ฌธ์ž๋กœ ๋ฐ”๊พธ๋ฉด "TrY", "HeLlO", "WoRlD"์ž…๋‹ˆ๋‹ค.
๐Ÿงฉ - ๋”ฐ๋ผ์„œ "TrY HeLlO WoRlD" ๋ฅผ ๋ฆฌํ„ดํ•ฉ๋‹ˆ๋‹ค.
๐Ÿ”’ ์ œํ•œ ์กฐ๊ฑด : โ˜‘๏ธ ๋ฌธ์ž์—ด ์ „์ฒด์˜ ์ง/ํ™€์ˆ˜ ์ธ๋ฑ์Šค๊ฐ€ ์•„๋‹ˆ๋ผ, ๋‹จ์–ด(๊ณต๋ฐฑ์„ ๊ธฐ์ค€)๋ณ„๋กœ ์ง/ํ™€์ˆ˜ ์ธ๋ฑ์Šค๋ฅผ ํŒ๋‹จํ•ด์•ผํ•ฉ๋‹ˆ๋‹ค.
                        โ˜‘๏ธ ์ฒซ ๋ฒˆ์งธ ๊ธ€์ž๋Š” 0๋ฒˆ์งธ ์ธ๋ฑ์Šค๋กœ ๋ณด์•„ ์ง์ˆ˜๋ฒˆ์งธ ์•ŒํŒŒ๋ฒณ์œผ๋กœ ์ฒ˜๋ฆฌํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.

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

๐Ÿ’ก ๋ฌธ์ž์—ด์˜ ์ธ๋ฑ์Šค ๊ฐ’์ด ์ง์ˆ˜์ผ ๋•Œ ๋Œ€๋ฌธ์ž๋กœ, ํ™€์ˆ˜์ผ ๋•Œ ์†Œ๋ฌธ์ž๋กœ ๋ฐ”๊ฟ”์ฃผ๊ณ , ๊ณต๋ฐฑ์ด ์ƒ๊ธฐ๋ฉด ์ธ๋ฑ์Šค ๊ฐ’์„ 0์œผ๋กœ ๋งŒ๋“œ๋Š” ๊ฒƒ์„ ๋ฐ˜๋ณต์‹œ์ผœ๋ณด์ž.

function solution(s) {
    let answer = '';
    let index = 0;

    for (let spelling of s) {
        answer += (index % 2 === 0) ? spelling.toUpperCase() : spelling.toLowerCase();
        index += 1;

        if (spelling === ' ') index = 0;
    }
    return answer;
}
console.log(solution("try hello world"))

   ___ ์ฐธ๊ณ ํ•˜๊ธฐ ___
  `1   for๋ฌธ : ๊ด„ํ˜ธ ์•ˆ์˜ ์‹์„ ๋ฐ˜๋ณต ์‹คํ–‰ํ•ฉ๋‹ˆ๋‹ค.
  `2   String.prototype.toUpperCase( ) : ๋ฌธ์ž์—ด์„ ๋Œ€๋ฌธ์ž๋กœ ๋ณ€ํ™˜ํ•ด ๋ฐ˜ํ™˜ํ•ฉ๋‹ˆ๋‹ค.
  `3   String.prototype.toLowerCase( ) : ๋ฌธ์ž์—ด์„ ์†Œ๋ฌธ์ž๋กœ ๋ณ€ํ™˜ํ•ด ๋ฐ˜ํ™˜ํ•ฉ๋‹ˆ๋‹ค.

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

# 1) replace( )์™€ ์ •๊ทœํ‘œํ˜„์‹ ํ™œ์šฉํ•˜๊ธฐ

function solution(s){
                                            // (\w)(\w) ์—ฐ์†๋œ ๋‘ ๋ฌธ์ž
    return s.toUpperCase().replace( /(\w)(\w)/g,  function(a){ return a[0].toUpperCase() + a[1].toLowerCase(); } )
}
console.log(solution("try hello world"))

   ___ ์ฐธ๊ณ ํ•˜๊ธฐ ___
  `1   String.prototype.replace( ) : ์–ด๋–ค ํŒจํ„ด์— ์ผ์น˜ํ•˜๋Š” ์ผ๋ถ€ ๋˜๋Š” ๋ชจ๋“  ๋ถ€๋ถ„์„ ์ƒˆ๋กœ์šด ๋ฌธ์ž์—ด๋กœ ๊ต์ฒดํ•˜์—ฌ ๋ฐ˜ํ™˜ํ•ฉ๋‹ˆ๋‹ค.
  `2   ์ •๊ทœ ํ‘œํ˜„์‹ : ๋ฌธ์ž์—ด์—์„œ ํŠน์ • ๋ฌธ์ž ์กฐํ•ฉ์„ ์ฐพ๊ธฐ ์œ„ํ•œ ํŒจํ„ด์ž…๋‹ˆ๋‹ค.
                             JavaScript์—์„œ๋Š” ์ •๊ทœ ํ‘œํ˜„์‹๋„ ๊ฐ์ฒด์— ํฌํ•จ๋ฉ๋‹ˆ๋‹ค. RegExp์˜ exec( )์™€ test( ) ๋ฉ”์„œ๋“œ๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ์ •๊ทœํ‘œํ˜„์‹์„ ๋งŒ๋“ค ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

 

# 2) split( )๊ณผ parseInt( ), slice( ) ํ™œ์šฉํ•˜๊ธฐ

function solution(s){
    let result = "";

    for(let word of s.split(" ")) {

        for(let i in word) {
            result += word[i][parseInt(i) % 2 == 0 ? "toUpperCase" : "toLowerCase"]();
        }
        result += " ";
    };

    return result.slice(0, -1);
}
console.log(solution("try hello world"))

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

 

# 3) split( )๊ณผ map( ), join( ) ํ™œ์šฉํ•˜๊ธฐ

function solution(s) {
    return s.split(' ').map((a) => {

        return a.split('').map((b, i) => {

            return (i % 2 === 0) ? b.toUpperCase() : b.toLowerCase();

        }).join('');
        
    }).join(' ');
}

// ์œ„์˜ ์‹์„ ํ•œ ์ค„๋กœ ํ‘œํ˜„ํ•˜๋ฉด,
// let solution = s => s.split(' ').map(el => el.split('').map((e,i) => i % 2 ? e.toLowerCase() : e.toUpperCase()).join('')).join(' ');

console.log(solution("try hello world"))

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

 

# 4) for๋ฌธ๊ณผ ์‚ผํ•ญ์—ฐ์‚ฐ์ž ํ™œ์šฉํ•˜๊ธฐ

function solution(s){
    let result ="";
    let even = false;

    for(let i = 0; i < s.length; i ++) {
        even = (even == true || s[i] == " ") ? false : true;
        result += (even == true) ? s[i].toUpperCase() : s[i].toLowerCase();
    }

    return result;
}
console.log(solution("try hello world"))

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

728x90
๋ฐ˜์‘ํ˜•

๋Œ“๊ธ€