๋ฌธ์์ด s
๊ฐ ์ฃผ์ด์ก์ ๋, s
์ ๊ฐ ์์น๋ง๋ค ์์ ๋ณด๋ค ์์ ๋์์ผ๋ฉด์, ์์ ๊ณผ ๊ฐ์ฅ ๊ฐ๊น์ด ๊ณณ์ ์๋ ๊ฐ์ ๊ธ์๊ฐ ์ด๋ ์๋์ง ์๊ณ ์ถ์ต๋๋ค.
์๋ฅผ ๋ค์ด, s
="banana"๋ผ๊ณ ํ ๋, ๊ฐ ๊ธ์๋ค์ ์ผ์ชฝ๋ถํฐ ์ค๋ฅธ์ชฝ์ผ๋ก ์ฝ์ด ๋๊ฐ๋ฉด์ ๋ค์๊ณผ ๊ฐ์ด ์งํํ ์ ์์ต๋๋ค.
๋ฐ๋ผ์ ์ต์ข ๊ฒฐ๊ณผ๋ฌผ์ [-1, -1, -1, 2, 2, 2]๊ฐ ๋ฉ๋๋ค.
๋ฌธ์์ด s
์ด ์ฃผ์ด์ง ๋, ์์ ๊ฐ์ด ์ ์๋ ์ฐ์ฐ์ ์ํํ๋ ํจ์ solution์ ์์ฑํด์ฃผ์ธ์.
s
์ ๊ธธ์ด โค 10,000s
์ ์์ด ์๋ฌธ์๋ก๋ง ์ด๋ฃจ์ด์ ธ ์์ต๋๋ค.s | result |
---|---|
"banana" | [-1, -1, -1, 2, 2, 2] |
"foobar" | [-1, -1, 1, -1, -1, -1] |
์
์ถ๋ ฅ ์ #1
์ง๋ฌธ๊ณผ ๊ฐ์ต๋๋ค.
์
์ถ๋ ฅ ์ #2
์ค๋ช
์๋ต
function solution(s) {
// ์ ์ถ๋ ์ ๋ต ๋ฐฐ์ด
const result = []
// ์
๋ ฅ๋ ์คํ ๋ง์ ๋ชจ์๋ ๋ฐฐ์ด
const already = []
for(let i = 0 ; i < s.length ; i ++) {
// ์
๋ ฅ๋ ์คํ ๋ง์ ๊ฒฝ์ฐ
if(already.includes(s[i])) {
// ํ์ฌ ์ธ๋ฑ์ค์์ ์
๋ ฅ๋ ํด๋น ๋ง์ง๋ง ์คํ ๋ง์ ์ธ๋ฑ์ค๋ฅผ ๋นผ ๊ฑฐ๋ฆฌ๋ฅผ ์กฐํํจ
result.push(i - already.lastIndexOf(s[i]))
} else {
result.push(-1)
}
// ์ด๋ฒ ์คํ ๋ง์ ์
๋ ฅํจ
already.push(s[i])
}
return result
}