[Inflearn #9] 가장 짧은 문자거리
![[Inflearn #9] 가장 짧은 문자거리](/assets/img/algorithm/algorithm.jpg)
인프런 코테 대비 알고리즘 문제풀이를 정리해 놓은 것입니다.
문제 설명
가장 짧은 문자거리
한 개의 문자열 s와 문자 t가 주어지면 문자열 s의 각 문자가 문자 t와 떨어진
최소거리를 출력하는 프로그램을 작성하세요.
문제 예제
▣ 입력설명
첫 번째 줄에 문자열 s와 문자 t가 주어진다.
문자열과 문자는 소문자로만 주어집니다. 문자열의 길이는 100을 넘지 않는다.
▣ 출력설명
첫 번째 줄에 각 문자열 s의 각 문자가 문자 t와 떨어진 거리를 순서대로 출력한다.
▣ 입력예제 1
teachermode
e
▣ 출력예제 1
1 0 1 2 1 0 1 2 2 1 0
풀이
// file: "solution.js"
function solution(s, t) {
let answer = [];
let count = 100; // #1
for (i = 0; i < s.length; i++) { // #2
if (s[i] === t) {
count = 0;
} else {
count++;
}
answer.push(count); // #3
}
count = 100; // #4
for (i = s.length - 1; i >= 0; i--) { // #5
if (s[i] === t) {
count = 0;
} else {
count++;
}
answer[i] = Math.min(answer[i], count); // #6
}
return answer;
}
설명
- count는 초기에 얼마나 t와 떨어져있는지 모르니 100으로 설정
- 반복문을 돌아 t이면 거리가 0이고 t와 떨어져 있는 만큼 count를 ++ 해준다.
- 결과값을 answer에 push
- 거꾸로 다시 반복문을 돌아서 비교해야하므로 count를 다시 100으로 세팅
- 반대로 반복문을 돈다
- t의 양쪽 문자 거리는 최소거리를 구해야하므로 기존의 answer의 있는 배열과 비교하여 더 작은 값으로 교체해 준다.