Jieunny์˜ ๋ธ”๋กœ๊ทธ

[JS] ํ”„๋กœ๊ทธ๋ž˜๋จธ์Šค - ๋‘˜๋งŒ์˜ ์•”ํ˜ธ ๋ณธ๋ฌธ

Study/Coding Test

[JS] ํ”„๋กœ๊ทธ๋ž˜๋จธ์Šค - ๋‘˜๋งŒ์˜ ์•”ํ˜ธ

Jieunny 2023. 2. 2. 17:42

๐Ÿ“Œ ๋ฌธ์ œ

๋‘ ๋ฌธ์ž์—ด s์™€ skip, ๊ทธ๋ฆฌ๊ณ  ์ž์—ฐ์ˆ˜ index๊ฐ€ ์ฃผ์–ด์งˆ ๋•Œ, ๋‹ค์Œ ๊ทœ์น™์— ๋”ฐ๋ผ ๋ฌธ์ž์—ด์„ ๋งŒ๋“ค๋ ค ํ•ฉ๋‹ˆ๋‹ค. ์•”ํ˜ธ์˜ ๊ทœ์น™์€ ๋‹ค์Œ๊ณผ ๊ฐ™์Šต๋‹ˆ๋‹ค.

  • ๋ฌธ์ž์—ด s์˜ ๊ฐ ์•ŒํŒŒ๋ฒณ์„ index๋งŒํผ ๋’ค์˜ ์•ŒํŒŒ๋ฒณ์œผ๋กœ ๋ฐ”๊ฟ”์ค๋‹ˆ๋‹ค.
  • index๋งŒํผ์˜ ๋’ค์˜ ์•ŒํŒŒ๋ฒณ์ด z๋ฅผ ๋„˜์–ด๊ฐˆ ๊ฒฝ์šฐ ๋‹ค์‹œ a๋กœ ๋Œ์•„๊ฐ‘๋‹ˆ๋‹ค.
  • skip์— ์žˆ๋Š” ์•ŒํŒŒ๋ฒณ์€ ์ œ์™ธํ•˜๊ณ  ๊ฑด๋„ˆ๋œ๋‹ˆ๋‹ค.

์˜ˆ๋ฅผ ๋“ค์–ด s = "aukks", skip = "wbqd", index = 5์ผ ๋•Œ, a์—์„œ 5๋งŒํผ ๋’ค์— ์žˆ๋Š” ์•ŒํŒŒ๋ฒณ์€ f์ง€๋งŒ [b, c, d, e, f]์—์„œ 'b'์™€ 'd'๋Š” skip์— ํฌํ•จ๋˜๋ฏ€๋กœ ์„ธ์ง€ ์•Š์Šต๋‹ˆ๋‹ค. ๋”ฐ๋ผ์„œ 'b', 'd'๋ฅผ ์ œ์™ธํ•˜๊ณ  'a'์—์„œ 5๋งŒํผ ๋’ค์— ์žˆ๋Š” ์•ŒํŒŒ๋ฒณ์€ [c, e, f, g, h] ์ˆœ์„œ์— ์˜ํ•ด 'h'๊ฐ€ ๋ฉ๋‹ˆ๋‹ค. ๋‚˜๋จธ์ง€ "ukks" ๋˜ํ•œ ์œ„ ๊ทœ์น™๋Œ€๋กœ ๋ฐ”๊พธ๋ฉด "appy"๊ฐ€ ๋˜๋ฉฐ ๊ฒฐ๊ณผ๋Š” "happy"๊ฐ€ ๋ฉ๋‹ˆ๋‹ค.
๋‘ ๋ฌธ์ž์—ด s์™€ skip, ๊ทธ๋ฆฌ๊ณ  ์ž์—ฐ์ˆ˜ index๊ฐ€ ๋งค๊ฐœ๋ณ€์ˆ˜๋กœ ์ฃผ์–ด์งˆ ๋•Œ ์œ„ ๊ทœ์น™๋Œ€๋กœ s๋ฅผ ๋ณ€ํ™˜ํ•œ ๊ฒฐ๊ณผ๋ฅผ returnํ•˜๋„๋ก solution ํ•จ์ˆ˜๋ฅผ ์™„์„ฑํ•ด์ฃผ์„ธ์š”.


์ œํ•œ์‚ฌํ•ญ

  • 5 โ‰ค s์˜ ๊ธธ์ด โ‰ค 50
  • 1 โ‰ค skip์˜ ๊ธธ์ด โ‰ค 10
  • s์™€ skip์€ ์•ŒํŒŒ๋ฒณ ์†Œ๋ฌธ์ž๋กœ๋งŒ ์ด๋ฃจ์–ด์ ธ ์žˆ์Šต๋‹ˆ๋‹ค.
    • skip์— ํฌํ•จ๋˜๋Š” ์•ŒํŒŒ๋ฒณ์€ s์— ํฌํ•จ๋˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค.
  • 1 โ‰ค index โ‰ค 20

๐Ÿ’ก ์•„์ด๋””์–ด

์•ŒํŒŒ๋ฒณ a-z๊นŒ์ง€ ๋ฐฐ์—ด์— ๋„ฃ์–ด์ฃผ๊ณ , skip์„ ๋ฐฐ์—ด๋กœ ๋งŒ๋“ค์–ด์„œ ์•ŒํŒŒ๋ฒณ ๋ฐฐ์—ด์—์„œ ๋นผ์ค€๋‹ค.
skip์€ ์–ด์ฐจํ”ผ ๊ฑด๋„ˆ๋›ฐ๊ณ  ์ƒ๊ฐํ•˜๊ธฐ ๋•Œ๋ฌธ์— ์•„์˜ˆ ์ฒ˜์Œ๋ถ€ํ„ฐ ๋นผ๋ฒ„๋ฆฌ๋Š” ๊ฒŒ ํŽธํ•˜๋‹ค.
s๋Œ๋ฉด์„œ ๊ฐ๊ฐ ์š”์†Œ idx+indexํ•œ ๊ฐ’์„ ์•ŒํŒŒ๋ฒณ ๋ฐฐ์—ด์—์„œ ์ฐพ์•„์„œ answer์— ๋”ํ•ด์ค€๋‹ค.
์ด๋•Œ, ์•ŒํŒŒ๋ฒณ ๋ฐฐ์—ด ๊ธธ์ด๋ฅผ ๋„˜์–ด๊ฐ€๋ฉด ๋‹ค์‹œ 0๋ฒˆ์งธ ๋ถ€ํ„ฐ ์‹œ์ž‘ํ•ด์•ผํ•˜๋ฏ€๋กœ ์•ŒํŒŒ๋ฒณ ๋ฐฐ์—ด ๊ธธ์ด๋กœ ๋‚˜๋ˆˆ ๋‚˜๋จธ์ง€๋ฅผ ์ด์šฉํ•œ๋‹ค.

โœ๏ธ ํ’€์ด

function solution(s, skip, index) {
  var answer = '';
  let alphabet = [];
  let skipArr = skip.split('');	// skip ๋ฐฐ์—ด๋กœ ๋งŒ๋“ค์–ด์ฃผ๊ธฐ

  for(let i=97; i<=122; i++){	// ์•ŒํŒŒ๋ฒณ ๋ฐฐ์—ด ์ดˆ๊ธฐํ™”
    alphabet.push(String.fromCharCode(i));	
  }

  for(let i=0; i<skipArr.length; i++){	// skipํ•  ๊ฐ’์„ ์•ŒํŒŒ๋ฒณ ๋ฐฐ์—ด์—์„œ ์ œ๊ฑฐ
    let idx = alphabet.indexOf(skipArr[i]);
    alphabet.splice(idx, 1);
  }
    
  for(let i=0; i<s.length; i++){	// s ๋Œ๋ฉด์„œ index ๋งŒํผ ๋”ํ•ด์ค€ ๊ฐ’์„ answer์— ์ถ”๊ฐ€
    let idx = alphabet.indexOf(s[i]) + index;
    if(idx >= alphabet.length){
      idx = idx % alphabet.length;
    }
    answer+=alphabet[idx];
  }
  
  return answer;
}