한 개의 문자열 s와 문자 t가 주어지면 문자열 s의 각 문자가 문자 t와 떨어진 최소거리를 출력하는 프로그램을 작성하세요.
첫 번째 줄에 문자열 s와 문자 t가 주어진다. 문자열과 문자는 소문자로만 주어진다. 문자열의 길이는 100을 넘지 않는다.
첫 번째 줄에 각 문자열 s의 각 문자가 문자t와 떨어진 거리를 순서대로 출력한다.
teachermode, e
10121012210
완전탐색 문제다. 왼쪽에서 오른쪽으로 탐색하는 코드는 비교적 쉽게 작성할 수 있다.
이제 다시 오른쪽에서 왼쪽으로 검색하며, 배열 내 숫자를 검색하게 되는데 이때 Math.min()
메소드를 사용하게 된다.
카운팅 넘버를 1000으로 잡아둔 후, 왼쪽에서 오른쪽으로 순회하며 답으로 도출할 값을 구한후, 다시 원본 배열을 토대로 오른쪽에서 왼쪽으로 순회를 하며 카운팅넘버를 매긴다.
마지막으로 값으로 넘긴 배열의 값을 answer[i] = Math.min(answer[i], 카운팅넘버)
로 가장 작은 값을 치환해주면 된다.
복잡해보이지만, 기준 값인 counting
의 변수를 다루는 기본적인 연습을 하도록 고안된 문제이다.
function solution(s, e) {
let answer = [];
let count = 1000;
for (let x of s) {
if (x === n) {
count = 0;
answer.push(count);
} else {
count++;
answer.push(count);
}
}
count = 1000;
for(let i = s.length - 1; i >= 0; i--) {
if (s[i] === n) {
count = 0;
} else {
count++;
answer[i] = Math.min(answer[i], count);
}
}
return answer;
};
const s = "teachermode"
const n = "e";
console.log(solution(s, n));