[Javascript] ๋ฌธ์์ด ์๋ฅด๊ธฐ ๋ฉ์๋ ์ ๋ฆฌ
๐ ๋ค์ด๊ฐ๋ฉฐ
์ฝ๋ฉํ
์คํธ ๋๋น๋ฅผ ์ํด ํ๋ก๊ทธ๋๋จธ์ค์ Lv.2 ๊ดํธ ํ์ ํ๊ธฐ๋ฅผ ํธ๋ ์ค์ด์๋ค. ์ ํ์ ์ธ ์คํ ์๋ฃ๊ตฌ์กฐ๋ฅผ ์ด์ฉํ๋ ๋ฌธ์ ๋ผ ๋น์ทํ ์ ํ์ ๋ฌธ์ ๋ฅผ ํ์ด๋ณธ ๊ฒฝํ์ด ์์ด์ ์์ํ๊ฒ ์ฝ๋๋ฅผ ์์ฑํ๊ณ ์ฑ์ ์ ํ๋๋ฐ TypeError: doubledS.splice is not a function
์ ์ค๋ฅ๊ฐ ๋ฐ์ํ๋ค. string์๋ splice ๋ฉ์๋๊ฐ ์๋๋ฐ ๋ฐฐ์ด๊ณผ ์ฐฉ๊ฐํ๋ ๊ฒ์ด๋ค.
๊ทธ๋์ splice๋ฅผ slice๋ก ๋ฐ๊พธ์ด ์ฃผ์๋๋ฐ, ์ด๋ฒ์๋ ํ
์คํธ๋ฅผ ํต๊ณผํ์ง ๋ชปํ ๋ฌธํญ์ด ์กด์ฌํ๋ค. ์๋ฌด๋ฆฌ ์๊ฐํด๋ ์๊ณ ๋ฆฌ์ฆ ์ ํ๋ฆฐ ๋ถ๋ถ์ด ์๋๋ฐ ์ ๊ทธ๋ฌ๋๊ฑฐ์ง ์๊ฐํ๋ค๊ฐ ์๋ฅธ ๋ฌธ์์ด์ console.log
๋ฅผ ์ด์ฉํด ํ์ธํด ๋ณด์๋๋ ๋ด๊ฐ ์ํ๋ ํํ๋ก ์๋ฆฌ์ง๊ฐ ์์ ์์๋ค. ๋ด๊ฐ ์ํ๋ ํํ๋ ๋ฌธ์์ด์ index๋ก ๋ถํฐ length๋งํผ ์๋ฅด๋๊ฑฐ์๋๋ฐ, String.slice()
์ 2๋ฒ์งธ ์ธ์๋ length๊ฐ ์๋๋ผ indexEnd์๊ธฐ ๋๋ฌธ์ด๋ค.
๊ฒฐ๊ตญ Array.splice()
์ ๋น์ทํ ๊ธฐ๋ฅ์ ํ๋ String์ ๋ฉ์๋๊ฐ ๋ญ์๋์ง ๊ธฐ์ต์ด ๋์ง ์์ ๊ฒ์์ ํตํด ๋ด๊ฐ ์ํ๋ ๋ฉ์๋๋ String.substr()
์์ ์๊ณ ์์ ํด ๋ฌธ์ ๋ฅผ ํด๊ฒฐํ๋ค.
ํ์ ๋ฐฐ์ด ์๋ฃ๊ตฌ์กฐ๋ง์ ๊ฑฐ์ ํ์ฉํ๋ค ๋ณด๋ ๋ฌธ์์ด์ ๋ฉ์๋๋ค์ ๋ํด์ ์์ด๋ฒ๋ฆฐ ๊ฒ ๊ฐ๋ค. ๋ฌธ์์ด์ ๋ค๋ฃจ๋ ๋ฌธ์ ๋ค๋ ์์ฃผ ๋์ค๋๋ฐ ๋ ์์ด๋ฒ๋ฆฌ๋ฉด ์๋๋ ์ด๋ฒ ๊ธฐํ์ ์ ๋ฆฌํด๋ณด์๊ณ ๊ฒฐ์ฌํ๋ค.
๋์ ๊ดํธ ํ์ ํ๊ธฐ ํ์ด
1 | function solution(s) { |
๋ฌธ์์ด ์๋ฅด๊ธฐ
์๋ฐ์คํฌ๋ฆฝํธ์์ ๋ฌธ์์ด์ ์๋ฅด๊ธฐ ์ํด์๋ substr(), substring(), slice() ๋ฉ์๋๋ฅผ ์ฌ์ฉํ๋ฉด ๋๋ค. ์ธ ๊ฐ์ง์ ํจ์ ์ค ์ํฉ์ ๋ง๋ ์ ์ ํ ํจ์๋ฅผ ์ฌ์ฉํ๋ฉด ๋๋๋ฐ ๊ฐ ๋ฉ์๋์ ๋ํด ์์๋ณด์.
substr(): ํน์ index์์ ์ํ๋ ๊ธธ์ด๋งํผ ์๋ผ์ ๋ฌธ์์ด๋ก ๋ฆฌํด
๋ฌธ๋ฒ
1 | str.substr(start[, length]) |
๋งค๊ฐ๋ณ์
start
- ์ถ์ถํ๊ณ ์ ํ๋ ๋ฌธ์๋ค์ ์์์์น์ ๋๋ค. ๋ง์ฝ ์์๊ฐ ์ฃผ์ด์ง๋ค๋ฉด, ๋ฌธ์์ด์ด๊ธธ์ด + start์ ๊ฐ์ผ๋ก ์ทจ๊ธํฉ๋๋ค. ์๋ฅผ ๋ค๋ฉด, start์ -3์ ์ค์ ํ๋ฉด, ์๋์ ์ผ๋ก ๋ฌธ์์ด์ด๊ธธ์ด - 3์ผ๋ก ์ค์ ํ๊ฒ ๋ฉ๋๋ค.
length
- ์ต์ ๊ฐ. ์ถ์ถํ ๋ฌธ์๋ค์ ์ด ์ซ์.
substring(): ์์ index์์ ๋ index์ ๊น์ง ๋ฌธ์์ด ์๋ผ์ ๋ฆฌํด
๋ฌธ๋ฒ
1 | str.substring(indexStart[, indexEnd]) |
๋งค๊ฐ๋ณ์
indexStart
- ๋ฐํ๋ฌธ์์ด์ ์์ ์ธ๋ฑ์ค
indexEnd
- ์ต์ . ๋ฐํ๋ฌธ์์ด์ ๋ง์ง๋ง ์ธ๋ฑ์ค (ํฌํจํ์ง ์์.)
ํน์ง
- ๋ง์ฝ indexEnd ๊ฐ ์๋ต๋ ๊ฒฝ์ฐ, substring() ๋ฌธ์์ด์ ๋๊น์ง ๋ชจ๋ ๋ฌธ์๋ฅผ ์ถ์ถ
- ๋ง์ฝ indexStart ๊ฐ indexEnd์ ๊ฐ์ ๊ฒฝ์ฐ, substring() ๋น ๋ฌธ์์ด์ ๋ฐํ
- ๋ง์ฝ indexStart ๊ฐ indexEnd๋ณด๋ค ํฐ ๊ฒฝ์ฐ, substring() ๋ฉ์๋๋ ๋ง์น ๋ ๊ฐ์ ์ธ์๋ฅผ ๋ฐ๊พผ ๋ฏ ์๋
slice(): substring๊ณผ ๋น์ทํ์ง๋ง ์ด์ง ๋ค๋ฅธ ๋ฉ์๋
๋ฌธ๋ฒ
1 | str.slice(beginIndex[, endIndex]) |
๋งค๊ฐ๋ณ์
beginIndex
- ๋ฐํ๋ฌธ์์ด์ ์์ ์ธ๋ฑ์ค
endIndex
- ์ต์ . ๋ฐํ๋ฌธ์์ด์ ๋ง์ง๋ง ์ธ๋ฑ์ค (ํฌํจํ์ง ์์.)
ํน์ง
- ์ธ์๋ก ์์๊ฐ ์ ๋ฌ๋์์ ๋,
substring()์ ๋น ๋ฌธ์์ด์ ๋ฆฌํด
ํ์ง๋งslice()๋ ์์ Index๋ฅผ ์ ์ฉํ์ฌ ๋ฌธ์์ด์ ์๋ผ์ค
.
๐ ์์ด์ง ๋ฉ์๋??
substr() ๋ฉ์๋์ ๋ํด ์ ํํ ์์๋ณด๊ธฐ ์ํด MDN์ ๊ฒ์์ ํ๋ ์ค์ ๋ค์๊ณผ ๊ฐ์ ๊ฒฝ๊ณ ๊ฐ ๋ฌ๋ ค์์๋ค.
๊ฒฝ๊ณ : ์๋ฐํ ๋งํด์ String.prototype.substr() ๋ฉ์๋๊ฐ ๋ ์ด์ ์ฌ์ฉ๋์ง ์๋, ์ฆ โ์น ํ์ค์์ ์ ๊ฑฐ๋โ ๊ฑด ์๋๋๋ค. ๊ทธ๋ฌ๋ substr()์ด ํฌํจ๋ ECMA-262 ํ์ค์ ๋ถ๋ก B๋ ๋ค์๊ณผ ๊ฐ์ด ๋ช ์ํ๊ณ ์์ต๋๋ค.> โฆ ๋ณธ ๋ถ๋ก์ด ํฌํจํ ๋ชจ๋ ์ธ์ด ๊ธฐ๋ฅ๊ณผ ํ๋์ ํ๋ ์ด์์ ๋ฐ๋์งํ์ง ์์ ํน์ง์ ๊ฐ๊ณ ์์ผ๋ฉฐ ์ฌ์ฉ์ฒ๊ฐ ์์ด์ง ๊ฒฝ์ฐ ๋ช ์ธ์์ ์ ๊ฑฐ๋ ๊ฒ์ ๋๋ค. โฆ
์๋ ๊ทธ๋ฌ๋ฉด length๋ก ์๋ฅด๊ธฐ ์ํด์๋ ์ด๋ป๊ฒ ํ๋ผ๋๊ฑฐ์ง?
์๊ฐํ๋๋ฐ str.slice()
๋ str.substr()
์ ๋ฉ์๋์ ์ธ์๋ฅผ ์ ์ดํดํ๊ณ ๋ง์ถ์ด์ ์ฌ์ฉํด์ผ ํ๋ ๊ฒ ๊ฐ๋ค. ๊ทธ๋๋ ๊ธฐ๋ณธ์ ์ผ๋ก ์ํ๋ length๋งํผ ์๋ฅด๊ธฐ ์ํด์ str.slice(beginIndex, beginIndex + length)๋ก ํ๋ฉด ๋ ๊ฒ ๊ฐ๋ค.(์ฌ์ค ์ด๋ฒ ๋ฌธ์ ๋ ์ด๋ ๊ฒ ํ๋ฉด ๋์ํ
๋ฐ ์์ผ๊ฐ ๋๋ฌด ์ข์๋๊ฒ ๊ฐ๋ค. ๋ ๋ง์ ๋ฌธ์ ๋ฅผ ํ์ด๋ณด๋ฉด ๊ด์ฐฎ์์ง๋ ค๋..?)