Simple Pig Latin

Codewars Link

๋ฌธ์ œ

Move the first letter of each word to the end of it, then add "ay" to the end of the word. Leave punctuation marks untouched.

Examples

pigIt('Pig latin is cool'); // igPay atinlay siay oolcay
pigIt('Hello world !');     // elloHay orldway !

๋ฌธ์ œ ์ดํ•ด

  1. ๋‹จ์–ด์˜ ์ฒซ๋ฒˆ์งธ ์•ŒํŒŒ๋ฒณ์„ ๋งจ ๋’ค๋กœ ์˜ฎ๊ธด๋‹ค.

  2. ๋‹จ์–ด๋งˆ๋‹ค ๋์— 'ay'๋ฅผ ๋ถ™์ธ๋‹ค.

  3. ํŠน์ˆ˜๋ฌธ์ž๋Š” ๊ทธ๋Œ€๋กœ ๋‚˜์˜จ๋‹ค.

ํ•ด๊ฒฐ ๋ฐฉ๋ฒ•

  1. ๋‹จ์–ด๋งˆ๋‹ค ์ ‘๊ทผํ•˜๊ธฐ ์œ„ํ•ด ๋ฌธ์ž์—ด๋ฅผ ๋ฐฐ์—ด๋กœ ๋งŒ๋“ ๋‹ค.

  2. ์‚ฌ์šฉํ•˜๊ธฐ ์ข‹์€ ๋ฉ”์„œ๋“œ

    1. concat() - ๋ฉ”์„œ๋“œ๋Š” ๋งค๊ฐœ๋ณ€์ˆ˜๋กœ ์ „๋‹ฌ๋œ ๋ชจ๋“  ๋ฌธ์ž์—ด์„ ํ˜ธ์ถœ ๋ฌธ์ž์—ด์— ๋ถ™์ธ ์ƒˆ๋กœ์šด ๋ฌธ์ž์—ด์„ ๋ฐ˜ํ™˜

      • 'ay'๋ฅผ ๋ถ™์ผ ๋•Œ ์‚ฌ์šฉํ•˜๊ธฐ ์ข‹์„ ๊ฑฐ ๊ฐ™๋‹ค.

    2. slice() - ๋ฉ”์†Œ๋“œ๋Š” ๋ฌธ์ž์—ด์˜ ์ผ๋ถ€๋ฅผ ์ถ”์ถœํ•˜๋ฉด์„œ ์ƒˆ๋กœ์šด ๋ฌธ์ž์—ด์„ ๋ฐ˜ํ™˜ํ•ฉ๋‹ˆ๋‹ค.

      • ์ฒซ๋ฒˆ์งธ ์•ŒํŒŒ๋ฒณ์„ ์ž๋ฅผ ๋•Œ ์‚ฌ์šฉํ•œ๋‹ค.

    3. split() - ๋ฉ”์„œ๋“œ๋Š” String ๊ฐ์ฒด๋ฅผ ์ง€์ •ํ•œ ๊ตฌ๋ถ„์ž๋ฅผ ์ด์šฉํ•˜์—ฌ ์—ฌ๋Ÿฌ ๊ฐœ์˜ ๋ฌธ์ž์—ด๋กœ ๋‚˜๋ˆ•๋‹ˆ๋‹ค.

      • ๋ฐฐ์—ด๋กœ ๋งŒ๋“ค ๋•Œ ์œ ์šฉํ•˜๋‹ค.

    4. join() - ๋ฉ”์„œ๋“œ๋Š” ๋ฐฐ์—ด์˜ ๋ชจ๋“  ์š”์†Œ๋ฅผ ์—ฐ๊ฒฐํ•ด ํ•˜๋‚˜์˜ ๋ฌธ์ž์—ด๋กœ ๋งŒ๋“ญ๋‹ˆ๋‹ค.**

      • ๋ฌธ์ž์—ด๋กœ return ํ•  ๋•Œ ์‚ฌ์šฉํ•œ๋‹ค.

  3. !์™€ ?๋Š” ๊ทธ๋Œ€๋กœ ๋‚˜์˜จ๋‹ค.

์ฝ”๋“œ ๊ตฌํ˜„

function pigIt(str) {
  const result = str.split(' ').map(word => {
    if (word !== '!' && word !== '?') {
      word = word + word[0] + 'ay';
      word = word.slice(1);
    }
    return word;
  }).join(' ');
  return result;
}

๊ฒฐ๊ณผ ๋ถ„์„

๋žœ๋ค ํ…Œ์ŠคํŠธ ํ†ต๊ณผ

@e.mihaylin's Solution

pigIt = s => s.split(' ').map(e => e.substr(1) + e[0] + 'ay').join(' ');

๋‚˜๋Š” ์ฒซ๋ฒˆ์งธ๋ฅผ ์ œ๊ฑฐํ–ˆ์ง€๋งŒ.. ์ด ์†Œ์Šค๋Š” ์ธ๋ฑ์Šค 1๋ถ€ํ„ฐ ๋ฌธ์ž์—ด์„ ๋งŒ๋“ค๊ธฐ ๋•Œ๋ฌธ์— slice๋ฅผ ํ•  ํ•„์š”๊ฐ€ ์—†๋‹ค.

๋Œ€์‹  ๋‚ด๊ฐ€ ํ‘ผ ๋ฌธ์ œ๋Š” ๋ณ€๊ฒฝ๋œ ๋ฌธ์ œ๋ผ ์ด ์†”๋ฃจ์…˜์€ '!'์™€ '?'์—๋„ 'ay'๊ฐ€ ๋ถ™๋Š”๋‹ค.

jsํŒŒ์ผ ๋ฐ”๋กœ๊ฐ€๊ธฐ

Last updated

Was this helpful?