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

[Algorithm] ํ”„๋กœ๊ทธ๋ž˜๋จธ์Šค Lv.1 : ์‹œ์ € ์•”ํ˜ธ

by ์ฝ”๋”ฉ๊ณต์ฑ… 2022. 11. 28.
๋ฐ˜์‘ํ˜•

์‹œ์ € ์•”ํ˜ธ

์–ด๋–ค ๋ฌธ์žฅ์˜ ๊ฐ ์•ŒํŒŒ๋ฒณ์„ ์ผ์ •ํ•œ ๊ฑฐ๋ฆฌ๋งŒํผ ๋ฐ€์–ด์„œ ๋‹ค๋ฅธ ์•ŒํŒŒ๋ฒณ์œผ๋กœ ๋ฐ”๊พธ๋Š” ์•”ํ˜ธํ™” ๋ฐฉ์‹์„ ์‹œ์ € ์•”ํ˜ธ๋ผ๊ณ  ํ•ฉ๋‹ˆ๋‹ค. ์˜ˆ๋ฅผ ๋“ค์–ด "AB"๋Š” 1๋งŒํผ ๋ฐ€๋ฉด "BC"๊ฐ€ ๋˜๊ณ , 3๋งŒํผ ๋ฐ€๋ฉด "DE"๊ฐ€ ๋ฉ๋‹ˆ๋‹ค. "z"๋Š” 1๋งŒํผ ๋ฐ€๋ฉด "a"๊ฐ€ ๋ฉ๋‹ˆ๋‹ค. ๋ฌธ์ž์—ด s์™€ ๊ฑฐ๋ฆฌ n์„ ์ž…๋ ฅ๋ฐ›์•„ s๋ฅผ n๋งŒํผ ๋ฏผ ์•”ํ˜ธ๋ฌธ์„ ๋งŒ๋“œ๋Š” ํ•จ์ˆ˜, solution์„ ์™„์„ฑํ•ด ๋ณด์„ธ์š”.


์ œํ•œ ์กฐ๊ฑด

* ๊ณต๋ฐฑ์€ ์•„๋ฌด๋ฆฌ ๋ฐ€์–ด๋„ ๊ณต๋ฐฑ์ž…๋‹ˆ๋‹ค.
s๋Š” ์•ŒํŒŒ๋ฒณ ์†Œ๋ฌธ์ž, ๋Œ€๋ฌธ์ž, ๊ณต๋ฐฑ์œผ๋กœ๋งŒ ์ด๋ฃจ์–ด์ ธ ์žˆ์Šต๋‹ˆ๋‹ค.
s์˜ ๊ธธ์ด๋Š” 8000์ดํ•˜์ž…๋‹ˆ๋‹ค.
n์€ 1 ์ด์ƒ, 25์ดํ•˜์ธ ์ž์—ฐ์ˆ˜์ž…๋‹ˆ๋‹ค.


์ž…์ถœ๋ ฅ ์˜ˆ

s n result
"AB" 1 "BC"
"z" 1 "a"
"a B z" 4 "e F d"

๋ฌธ์ œ ํ’€์ด

var upper์—๋Š” ๋Œ€๋ฌธ์ž๋ฅผ, var lower์—๋Š” ์†Œ๋ฌธ์ž๋ฅผ ์ €์žฅ์‹œํ‚จ๋‹ค. ๊ทธ๋Ÿฐ ๋‹ค์Œ for๋ฌธ์„ ํ†ตํ•ด์„œ s์˜ ๋ฐ์ดํ„ฐ ๊ฐœ์ˆ˜๋งŒํผ i๋ฅผ ์ฆ๊ฐ€์‹œ์ผœ์ฃผ๊ณ  var text์— s[i]๋ฅผ ์ €์žฅํ•œ๋‹ค. ๋งŒ์ผ s๊ฐ€ "AB"๋ผ๋ฉด var text๋Š” s[1]๋กœ 1์ด ๋ฐ€๋ ค "BC"๊ฐ€ ๋˜๋Š” ์‹์ด๋‹ค. ๊ทธ ๋‹ค์Œ if๋ฌธ๊ณผ upper, includes, textArr ๋“ฑ์„ ํ™œ์šฉํ•˜์—ฌ ์Šคํฌ๋ฆฝํŠธ๋ฅผ ์ง ๋‹ค.

function solution(s, n) {
    var upper = "ABCDEFGHIJKLMNOPQRSTUVWXYZ";
    var lower = "abcdefghijklmnopqrstuvwxyz";
    var answer= '';

    for(var i =0; i <s.length; i++){
        var text = s[i];
        if(text == ' ') {
            answer += ' '; 
            continue;
        }
        var textArr = upper.includes(text) ? upper : lower;
        var index = textArr.indexOf(text)+n;
        if(index >= textArr.length) index -= textArr.length;
        answer += textArr[index];
    }
    return answer;
}

๋‹ค๋ฅธ ํ’€์ด ๋ฐฉ์‹

var chars์— ๋กœ๋งˆ์ž ๋Œ€์†Œ๋ฌธ์ž์™€ ๊ณต๋ฐฑ 26์นธ์„ ์ €์žฅ์‹œํ‚ค๊ณ  split์œผ๋กœ ์ชผ๊ฐ  ๋‹ค์Œ map๊ณผ chars.indexOf, join์„ ํ†ตํ•ด ์Šคํฌ๋ฆฝํŠธ๋ฅผ ํ•œ ์ค„๋กœ ์งœ๋‚ผ ์ˆ˜ ์žˆ๋‹ค.

function solution(s, n) {
    var chars = "abcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUVWXY                          "
    return s.split('').map(e => chars[chars.indexOf(e)+n]).join('');
}
๋ฐ˜์‘ํ˜•

๋Œ“๊ธ€


Reference Book

JavaScript
HTML
CSS
๊ด‘๊ณ  ์ค€๋น„์ค‘์ž…๋‹ˆ๋‹ค.