한 개의 문자열 s와 문자 t가 주어지면 문자열 s의 각 문자가 문자 t와 떨어진 최소거리를 출 력하는 프로그램을 작성하세요.
function solution(s, t){
let answer=[];
let result=[];
for(i=0; i<s.length; i++) {
if(s[i]===t) result.push(i);
}
for(i=0; i<s.length; i++) {
let distance=[];
for(let x of result) {
let d = x > i ? x-i : i-x;
distance.push(d);
}
answer.push(Math.min(...distance));
}
return answer;
}
let str="teachermode";
console.log(solution(str, 'e'));
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'));
정답 풀이를 처음 보았을 때, p=1000
을 보고 이게 무슨 풀이인가 싶었는데, 나의 풀이의 경우 s.length
한바퀴 + s.length
* t의 갯수
만큼의 처리를 해줘야하는데 반해, 두바퀴만으로 같은 결과를 만들어내기 때문이다.