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 !
๐ฉ ๊ฐ ๋จ์ด์ ์ฒซ๋ฒ์งธ ๊ธ์๋ฅผ ๊ทธ ๊ธ์์ ๋์ผ๋ก ์ฎ๊ธฐ๊ณ 'ay'๋ฅผ ์ถ๊ฐํ์์ค. punctuation marks(๋ฌธ์ฅ๋ถํธ/๊ตฌ๋์ )์ผ ๋๋ ๋ณ๊ฒฝ์ด ์๋๋ก ํ์์ค
์ฒซ๋ฒ์งธ ์กฐ๊ฑด์ ๋ณ๋ฌด๋ฆฌ์์ด ํด๊ฒฐํ์๋ค. ํ์ง๋ง ๊ตฌ๋์ !! ์ด๊ฒ์ ๊ณจ๋ผ๋ด๋ ๊ฒ์ด ๊น๋ค๋ก์ ๋ค. ์ญ์ ์ ๊ทํํ์์์ ๋งํ๋ค. ์ฃผ์ด์ง ์ํํ ์คํธ์ ๊ฒฝ์ฐ์ '?' ํน์ '!'๋ง์ด ์ฃผ์ด์ ธ์ ๋ฌธ์ ๋ฅผ ํต๊ณผํ๋ ๊ฒ์ ๊ทธ๋ ๊ฒ ์ด๋ ต์ง ์์ง๋ง, ์ ํํ๊ฒ ๋ชจ๋ ์ผ์ด์ค๋ฅผ ํต๊ณผํ๊ธฐ ์ํด์ ์ ๊ทํํ์์ ์ฌ์ฉํ์ฌ์ผ๋ง ํ๋ค. ์ค๋๋ ์ด ๋ฌธ์ ๋ฅผ ํตํด์ ๋ช ๊ฐ์ง์ ์ ๊ทํํ์์ ๋ฐฐ์ธ ์ ์์๋ค.
function pigIt(str){
return str.split(' ')
.map(word =>
word === '?' || word === '!' ?
word : `${word.slice(1)}${word.slice(0,1)}ay`)
.join(' ')
};
๐ ์ด ํ์ด๋ ์๋ฐํ๊ฒ ๋งํ๋ฉด ํ๋ฆฐ ํ์ด์ด๋ค. ์ด ๋ฌธ์ ์ ์ํํ ์คํธ๋ง์ ๋๊ธฐ๊ธฐ ์ํด์ ์ฐ์ ์ด๋ ๊ฒ ํ์๋ค.
๐ ์ฐธ๊ณ ๋ฌธ์์์ ์ค๋ช ์ด ์ ๋์ด์์ด์ ๊ธฐ๋ณธ์ ์ธ ๋ด์ฉ๋ค์ ๊ฐ์ ธ์๋ดค๋ค. ๊ธ ๊ฐ์ฌํฉ๋๋ค๐
\w
: ์๋ฌธ์ ๋ฐ _ ๋ฌธ์์ ์ผ์นโ
\W
: ์๋ฌธ์ ๋ฐ _ ๋ฌธ์๋ฅผ ์ ์ธํ ๋ฌธ์์ ์ผ์น\d
: ์ซ์์ ์ผ์น\D
: ์ซ์๋ฅผ ์ ์ธํ ๋ฌธ์์ ์ผ์น\s
: ์ฌ๋ฌ ๊ฐ์ง ๊ณต๋ฐฑ ๋ฌธ์์ ์ผ์น(๊ณต๋ฐฑ๋ฌธ์์ ์ข
๋ฅ : ์คํ์ด์ค, ํญ ๋ฑ....)\S
: ๊ณต๋ฐฑ ๋ฌธ์๋ฅผ ์ ์ธํ ๋ฌธ์์ ์ผ์น.
: ๋ชจ๋ ๋ฌธ์์ ์ผ์น[]
: ๋๊ดํธ ์ฌ์ด์ ์กด์ฌํ๋ ๋ฌธ์๋ค ์ค ํ๋์ ์ผ์น[^]
: ๋๊ดํธ ์ฌ์ด์ ๊ฐ์ฅ ์ฒซ ๋ฒ์งธ ๋ฌธ์๋ก ^
๋ฌธ์๊ฐ ์์ ๋, ๊ทธ ๋ฌธ์ ์ดํ์ ์กด์ฌํ๋ ๋ฌธ์๋ค์ ์ ์ธํ ๋ชจ๋ ๋ฌธ์์ ์ผ์น[a-z]
: ๋๊ดํธ ์ฌ์ด์์ ํน์ ๋ฌธ์1-ํน์ ๋ฌธ์2๊ฐ ์กด์ฌํ ๋, ํน์ ๋ฌธ์1๊ณผ ํน์ ๋ฌธ์2์ฌ์ด์ ๋ชจ๋ ๋ฌธ์์ ์ผ์น, ์๋ฅผ ๋ค์ด [0-9]
์ ๊ฒฝ์ฐ, 0 ๋ถํฐ 9๊น์ง ๋ชจ๋ ์ซ์์ ์ผ์น, [a-z]
์ ๊ฒฝ์ฐ, a๋ถํฐ z๊น์ง ๋ชจ๋ ์๋ฌธ์ ์ํ๋ฒณ๊ณผ ์ผ์น^
: ๋๊ดํธ ์ฌ์ด์ ์กด์ฌํ ๋๋ ๋ถ์ ์ ๋ํ๋ด์ง๋ง, ๋๊ดํธ ๋ฐ์์๋ ๋ฌธ์์ด์ ์์๊ณผ ์ผ์น$
: ^์ ๋ฐ๋๋ก, ๋ฌธ์์ด์ ๋๊ณผ ์ผ์น*
: ์์ ์กด์ฌํ๋ ๋ฌธ์๊ฐ 0๋ฒ ํน์ ๊ทธ ์ด์ ๋ฐ๋ณต๋๋ ๋ฌธ์๋ฅผ ์ฐพ์ ๋ ์ฌ์ฉ+
: ์์ ์กด์ฌํ๋ ๋ฌธ์๊ฐ 1๋ฒ ํน์ ๊ทธ ์ด์ ๋ฐ๋ณต๋๋ ๋ฌธ์๋ฅผ ์ฐพ์ ๋ ์ฌ์ฉโ
?
: ์์ ์กด์ฌํ๋ ๋ฌธ์๊ฐ ์์ ์๋, ์์ ์๋ ์์ ๋ ์ฌ์ฉ\
: .
ํน์ []
๋ฑ ํน์ํ ๋ชฉ์ ์ผ๋ก ์ฌ์ฉ๋๋ ๋ฉํ ๋ฌธ์๋ฅผ ๋ฌธ์์ด์์ ์ฐพ๊ณ ์ถ์ ๋, ๋ฉํ ๋ฌธ์๋ฅผ ๋ฌธ์ ๊ทธ๋๋ก ์ฌ์ฉํ ์ ์๋๋ก ๋ณํํด์ฃผ๋ ๊ธฐํธ. .
์ ๋ชจ๋ ๋ฌธ์์ ์ผ์นํ์ง๋ง, \.
์ ๊ฒฝ์ฐ, .
๋ฌธ์์ ์ผ์นํ๋ ๊ฒ์ ๋ํ๋function pigIt(str){
return str.split(' ')
.map(ele => ele.match(/\w+/) ? `${ele.substring(1)}${ele[0]}ay` : ele)
.join(' ');
}
๐ ์์์ ์ฒดํฌํ์ํ ๋ด์ฉ๋ค์ ์ฌ์ฉํ์๋ค. ๋ณด๋ฉด ๋ณ๊ฑฐ์๋ ๊ฒ ๊ฐ์๋ฐ... ์ฐ์ ์์์ผํ๋ค!!
๐ ์ด ์ ๊ทํํ์ ๋ง๊ณ ๋ ์ฌ๋ฌ๊ฐ์ง ๊ฒ๋ค์ด ์กด์ฌํ์ง๋ง ๊ทธ ์ค์์ ๊ฐ์ฅ ์์๋ณด๊ธฐ ํธํ ๊ฒ์ ๊ฐ์ ธ์๋ค.๐
ele.match(/\w+/)
์ด ์ฝ๋๋ฅผ ์ค๋ช
ํด๋ณด๋ฉด, ๋จ์ด ์์ ์๋ฌธ์ ๋ฐ _์ ์ผ์นํ๋ ๊ฒ์ด 1๊ฐ ์ด์ ์กด์ฌํ๋ฉด ์ผํญ์ฐ์ฐ์์ ์ฒซ๋ฒ์งธ๋ฅผ ์คํํ๊ณ ๊ทธ๋ ์ง ์์ผ๋ฉด ๊ทธ๋ฅ ๊ทธ ๋จ์ด(์ฌ๊ธฐ์ punctuation marks)๋ฅผ ๋ฆฌํดํ๊ฒ ๋๋ค.
์ฐธ๊ณ ๋ก ์๋ฐ์คํฌ๋ฆฝํธ๋ ๋ฌธ์์ด์ ๊ฒฝ์ฐ์๋ ๋ฐฐ์ด์ฒ๋ผ ์ธ๋ฑ์ค๋ก ์ ๊ทผ์ด ๊ฐ๋ฅํ๋ค. ๊ทธ๋ ๊ธฐ ๋๋ฌธ์ ๋ฌธ์์ด์ ์ฒซ๊ธ์๋ฅผ ์์์ ์ฒ๋ผ ele[0]
์ผ๋ก ์ ๊ทผํ๋ ๊ฒ์ ํ์ธํ ์ ์๋ค.