728x90
๋ฐ์ํ
๐ ๋ฌธ์
ํ ๊ฐ์ ๋ฌธ์์ด s์ ๋ฌธ์ t๊ฐ ์ฃผ์ด์ง๋ฉด ๋ฌธ์์ด s์ ๊ฐ ๋ฌธ์๊ฐ ๋ฌธ์ t์ ๋จ์ด์ง ์ต์๊ฑฐ๋ฆฌ๋ฅผ ์ถ๋ ฅํ๋ ๋ฌธ์ ์ด๋ค.
๐ ํ์ด
๐ง๐ป๐ป ๋์ ํ์ด ๋ฐฉ๋ฒ
- ๋ฌธ์์ด์ ์ฐจ๋ก๋๋ก ๋๋ฉด์ slice() ๋ฉ์๋๋ฅผ ์ฌ์ฉํ์ฌ ๊ฐ ๋ฌธ์๋ฅผ ๊ธฐ์ค์ผ๋ก ์ผ์ชฝ, ์ค๋ฅธ์ชฝ์ ๋๋๋ค.
- ์ผ์ชฝ, ์ค๋ฅธ์ชฝ ๊ฐ๊ฐ lastIndexOf(), indexOf() ๋ฉ์๋๋ฅผ ์ฌ์ฉํ์ฌ ๋ฌธ์ t์ ๋จ์ด์ง ๊ฑฐ๋ฆฌ๋ฅผ ์ธก์ ํ๋ค.
- Math.min() ๋ฉ์๋๋ฅผ ์ฌ์ฉํ์ฌ ์ต์๊ฑฐ๋ฆฌ๋ฅผ ๊ตฌํ ํ ๋ฐฐ์ด์ ์ ์ฅํ๋ค.
function solution(s, t) {
const answer = [];
for (let i = 0; i < s.length; i++) {
if (s[i] === t) {
answer.push(0);
} else {
// ๊ฐ ๋ฌธ์๋ฅผ ๊ธฐ์ค์ผ๋ก ์ผ์ชฝ, ์ค๋ฅธ์ชฝ์ ๋๋ ์ ๊ฒ์ฌ
const left = i === 0 ? 1000 : i - s.slice(0, i).lastIndexOf(t);
const right = i === s.length - 1 ? 1000 : s.slice(i + 1).indexOf(t) + 1;
answer.push(Math.min(left, right));
}
}
return answer.join(' ');
}
let str = 'teachermode';
console.log(solution(str, 'e'));
๐จ๐ผ๐ซ ๊ฐ์ฌ๋ ํ์ด ๋ฐฉ๋ฒ
๊ฐ ๋ฌธ์๋ฅผ ๊ธฐ์ค์ผ๋ก ๋ฌธ์ t๊ฐ ์ผ์ชฝ, ์ค๋ฅธ์ชฝ์ ์๋ ๊ฒฝ์ฐ๋ฅผ ๋ฐ๋ก ๊ตฌํ ํ ๋น๊ตํ๋ฉด ์ต์๊ฑฐ๋ฆฌ๋ฅผ ๊ตฌํ ์ ์๋ค.
- ๊ฐ๋ฅํ ๋ฌธ์์ด์ ๊ธธ์ด๋ณด๋ค ํฌ๋๋ก ๋ณ์ p๋ฅผ 1000์ผ๋ก ์ด๊ธฐํํ๋ค.
- ๋ฌธ์ t๊ฐ ์ผ์ชฝ์ ์๋ ๊ฒฝ์ฐ, ๋ฌธ์ t๊ฐ ์ค๋ฅธ์ชฝ์ ์๋ ๊ฒฝ์ฐ๋ก ๋๋์ด ๊ฐ์ฅ ๊ฐ๊น์ด ๋ฌธ์ t์์ ๊ฑฐ๋ฆฌ๋ฅผ ์ธก์ ํ๋ค.
- ๋จผ์ , ๋ฌธ์์ด์ ์ฒ์๋ถํฐ ๋๋ฉด์ ๊ฐ์ฅ ๊ฐ๊น์ด ๋ฌธ์ t์์ ๊ฑฐ๋ฆฌ๋ฅผ ๋ฐฐ์ด์ ์ ์ฅํ๋ค. (๋ฌธ์ t๊ฐ ์ผ์ชฝ์ ์๋ ๊ฒฝ์ฐ)
- ๋ฌธ์์ด์ ๋์์๋ถํฐ ๋๋ฉด์ ๊ฐ์ฅ ๊ฐ๊น์ด ๋ฌธ์ t์์ ๊ฑฐ๋ฆฌ๋ฅผ ๊ตฌํ ํ ์ผ์ชฝ์ ์๋ ๊ฒฝ์ฐ์ ๋น๊ตํ์ฌ ๋ ์์ ๊ฐ์ผ๋ก ์ ์ฅํ๋ค. (๋ฌธ์ t๊ฐ ์ค๋ฅธ์ชฝ์ ์๋ ๊ฒฝ์ฐ)
function solution(s, t) {
let answer = [];
let p = 1000;
// ๋ฌธ์ t๊ฐ ์ผ์ชฝ์ ์๋ ๊ฒฝ์ฐ
for (let i = 0; i < s.length; i++) {
if (s[i] === t) p = 0;
else p++;
answer.push(p);
}
p = 1000;
// ๋ฌธ์ t๊ฐ ์ค๋ฅธ์ชฝ์ ์๋ ๊ฒฝ์ฐ
for (let i = s.length - 1; i >= 0; i--) {
if (s[i] === t) p = 0;
else p++;
answer[i] = Math.min(answer[i], p);
}
return answer;
}
let str = 'teachermode';
console.log(solution(str, 'e'));
'Algorithm > ์ธํ๋ฐ(inflearn)' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[JavaScript/section 4] 01 - ์๋ฆฟ์์ ํฉ (0) | 2022.09.14 |
---|---|
[JavaScript/section 3] 05 - ๋ฌธ์์ด ์์ถ (0) | 2022.09.13 |
[JavaScript/section 3] 03 - ์ซ์๋ง ์ถ์ถ (0) | 2022.09.12 |
[JavaScript/section 3] 02 - ์ ํจํ ํฐ๋ฆฐ๋๋กฌ (0) | 2022.09.08 |
[JavaScript/section 3] 01 - ํ๋ฌธ ๋ฌธ์์ด (0) | 2022.09.08 |