ํฐ์คํ ๋ฆฌ ๋ทฐ
๋ฌธ์
ํ ๊ฐ์ ๋ฌธ์์ด s์ ๋ฌธ์ t๊ฐ ์ฃผ์ด์ง๋ฉด ๋ฌธ์์ด s์ ๊ฐ ๋ฌธ์๊ฐ ๋ฌธ์ t์ ๋จ์ด์ง ์ต์๊ฑฐ๋ฆฌ๋ฅผ ์ถ๋ ฅํ๊ณ ์ ํ๋ค.
๋ฌธ์ ํ์ด
๋ฌธ์์ด ๋ด์์ ๋ฌธ์ ๊ฐ์ ๊ฑฐ๋ฆฌ๋ฅผ ๊ตฌํ๊ธฐ ์ํด์ ๋ ๋ฌธ์์ ์ธ๋ฑ์ค ๊ฐ์ ๊ฐ์ฐํด์ค๋ค.
๋ฌธ์์ด s ๋ด์์ ๋ฌธ์ t๋ ์ฌ๋ฌ๊ฐ๊ฐ ํฌํจํ๊ณ ์๊ธฐ ๋๋ฌธ์ ๊ฐ t์ ์ธ๋ฑ์ค ๊ฐ์ ๊ตฌํ๊ธฐ ์ํด์ ๋จ์ํ String.indexOf(element)๋ฅผ ์ฌ์ฉํ๋ฉด ์๋๋ค.
indexOf()๋ ์ฒซ ๋ฒ์งธ ์ธ๋ฑ์ค๋ง ๋ฐํํ๊ธฐ ๋๋ฌธ์ ๋ฌธ์์ด s ๋ด์์ ๊ฐ์ฅ ์ฒ์ ๊ฒ์ ๋ ๋ฌธ์ t๋ง์ ์ธ๋ฑ์ค ๊ฐ์ด ๋ฐํ๋๋ค.
์ด๋ฌํ ๋ฌธ์ ๋ฅผ ํด๊ฒฐํ๊ธฐ ์ํด indexOf() ๋ ๋ฒ์งธ ์ธ์๋ก ๊ฒ์์ ์์ํ ์ธ๋ฑ์ค๋ฅผ ์ง์ ํ๋๋ฐ, ์ด๋ ๊ฒ์์ด ๋๋ ๋ฌธ์ t๊ฐ ๋๋ ๋ค์๋ถํฐ ๋ค์ ๋ฌธ์ t๋ฅผ ๊ฒ์ฌํด์ค์ผ ๋๊ธฐ ๋๋ฌธ์ ์์ ์ ์ธ๋ฑ์ค ๊ฐ์ 1์ ๊ฐ์ฐํด์ค๋ค.
์ต์๊ฑฐ๋ฆฌ๋ฅผ ๊ตฌํ๊ธฐ ์ํด์ ์ค์ฒฉ for๋ฌธ์ ์ฌ์ฉํ์ฌ ํด๋น ๋ฌธ์์ ์์ ๊ตฌํ ๊ฐ ๋ฌธ์ t์ ์ธ๋ฑ์ค ๊ฐ๋ค๊ณผ ๊ฐ์ฐํ์ ๋ ๊ฐ์ฅ ์์ ๊ฐ์ ๊ฐ์ง ๊ฐ๋ง์ ์ ๋ต์ผ๋ก ์ฒ๋ฆฌํ๋ค.
์ด๋ ๊ฑฐ๋ฆฌ๋ ์๋ฅผ ๊ณ ๋ คํ์ง ์๊ธฐ ๋๋ฌธ์ Math.abs()๋ฅผ ์ฌ์ฉํ์ฌ ์ฌ์ ์ ๋ชจ๋ ๊ฑฐ๋ฆฌ์ ๊ฐ์ ์์๋ก ๋ฐ๊ฟ์ค๋ค.
์ฝ๋
function solution(str, keyWord) {
let answer = [];
let target = 0;
let posE = [];
let minDistance = Number.MAX_SAFE_INTEGER;
for(let x of str) {
if (x === keyWord) {
posE.push(str.indexOf(keyWord, target));
target = str.indexOf(keyWord, target) + 1;
}
}
for(let i = 0; i < str.length; i++) {
minDistance = Number.MAX_SAFE_INTEGER;
for(let j = 0; j < posE.length; j++) {
if(minDistance > Math.abs(posE[j] - i)) {
minDistance = Math.abs(posE[j] - i);
}
}
answer.push(minDistance);
}
return answer;
}
console.log(solution("teachermode", "e"));
๋ฌธ์ ํ์ด2
๋ฌธ์์ด s์ ๊ธธ์ด๋ณด๋ค ํฐ ๊ฐ์ ๋ณ์ p์ ํ ๋นํด์ค๋ค.
๋ฐ๋ณต๋ฌธ ๋ด์์ ์ฒซ ๋ฒ์งธ ๋ฌธ์์ ํด๋นํ๋ ์ธ๋ฑ์ค์ผ ๋ p์ ๊ฐ์ ๊ฐ์ฐํด์ฃผ๊ณ ๊ทธ ๊ฐ์ ํ ๋นํด์ค๋ค.
์ดํ ๋ฐ๋ณต๋ฌธ์ผ๋ก ์ํํ ๋ ๋ฌธ์ t์ ํด๋นํ ๊ฒฝ์ฐ์ p์ ๊ฐ์ 0์ผ๋ก ์ด๊ธฐํ ํด์ฃผ์ด ํด๋น ๊ฐ์ด ๊ธฐ์ค์ ์ผ๋ก์ ์ ์ฉ๋๋๋ก ํ๋ค.
๋ฌธ์ t์ ํด๋นํ๋ ์ธ๋ฑ์ค์ ๋ค์ ์๋ฒ์์ 0์ผ๋ก ์ด๊ธฐํํด์ฃผ์๋ p์ ๊ฐ์ด ๊ฐ์ฐ๋์ด 1์ด ๋๋ค. ๊ทธ ๋ค์์ ๋ง์ฐฌ๊ฐ์ง์ ์ฐ์ฐ ๊ฒฐ๊ณผ๋ก 3์ด ๋๋ค.
๊ฒฐ๊ณผ์ ์ผ๋ก ์ผ์ชฝ์์ ์ค๋ฅธ์ชฝ์ผ๋ก ๋ฌธ์์ด์ ์ํํ๊ฒ ๋๋ฉด์ ๊ธฐ์ค์ ๋ฌธ์ t์ ๋ํด ์ผ์ชฝ์ผ๋ก๋ถํฐ ์ผ๋ง๋งํผ ๋จ์ด์ ธ ์๋์ง๋ก ๊ณ์ฐํ ์ ์๋ค.
์ต์ ๊ฑฐ๋ฆฌ๋ฅผ ๊ตฌํ๊ธฐ ์ํด์๋ ์ค๋ฅธ์ชฝ์์ ์ผ์ชฝ์ผ๋ก ์ํํ์์๋ ๊ธฐ์ค์ ๋ฌธ์ t์ ์ค๋ฅธ์ชฝ์ผ๋ก๋ถํฐ ์ผ๋ง๋งํผ ๋จ์ด์ ธ ์๋์ง ๋ํ ๊ณ์ฐํด์ค์ผ ํ๋ค.
์ด๋ฅผ ์ํด ๋ฐ๋ณต๋ฌธ ๋ด์์ ๋ฌธ์์ด์ ๋ง์ง๋ง ์ธ๋ฑ์ค์์๋ถํฐ ์ด์ ๊ณผ ๊ฐ์ ์ฐ์ฐ ๋ฐฉ์์ ์ํํด์ฃผ๋ฉฐ ๋ ๊ฐ์ ๋น๊ตํด ๊ฐ์ด ์ ์ ๊ฐ์ ์ ๋ต์ผ๋ก ์ฒ๋ฆฌํ๋ค.
์ฝ๋
function solution(s, t){
let answer=[];
let p=1000;
for(let x of s){
if(x===t){
p=0;
answer.push(p);
}
else{
p++;
answer.push(p);
}
}
p=1000;
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'));
'์๊ณ ๋ฆฌ์ฆ > ํ๊ทธ ๋ณ ํ์ด' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
์๋ฆฟ์์ ํฉ (0) | 2021.05.31 |
---|---|
๋ฌธ์์ด ์์ถ (0) | 2021.05.26 |
์ซ์๋ง ์ถ์ถ (0) | 2021.05.17 |
์ ํจํ ํฐ๋ฆฐ๋๋กฌ (0) | 2021.05.16 |
ํ๋ฌธ ๋ฌธ์์ด (0) | 2021.05.15 |