11.가장 짧은 문자거리 - 문자열 탐색
Updated:
가장 짧은 문자거리
🔍 문제
한 개의 문자열 s와 문자 t가 주어지면 문자열 s의 각 문자가 문자 t와 떨어진 최소거리를 출력하는 프로그램을 작성하세요.
🔹 입력설명
첫 번째 줄에 문자열 s와 문자 t가 주어진다. 문자열과 문자는 소문자로만 주어집니다.
문자열의 길이는 100을 넘지 않는다.
🔹 출력 설명
첫 번째 줄에 각 문자열 s의 각 문자가 문자 t와 떨어진 거리를 순서대로 출력한다.
🔹 입력예제 1
teachermode e
🔹 출력 예제 1
1 0 1 2 1 0 1 2 2 1 0
📌 풀이
<html>
<head>
<meta charset="UTF-8">
<title>출력결과</title>
</head>
<body>
<script>
function solution(s, t) {
let answer = [];
let p = 100; // 임의의 최대값 설정
// 오른쪽 방향으로의 for 문 탐색
for(let x of s) {
if(x === t) {
p = 0;
answer.push(p); //t 를 만나면 0 으로 초기화 하는것임
} else {
p++;
answer.push(p);
}
}
p = 100; // p의 다시 초기화
// 왼쪽 방향으로의 for 문 탐색
for(let i = s.length -1; i >= 0; i--) { // (맨마지막 index 설정; i가 0이 될때까지; i가 하나씩 줄어듬) -> 그러면 방향이 왼쪽으로 for문임
if(s[i] === t) p = 0; // 같은때는 그냥 p 만 초기화, push는 이미 오른쪽 방향일때 했기 때문에 그냥 초기화만 해줌 (또 push 하면 최종 값에서 0이 늘어남)
else {
p++; // p가 1씩 증가함
answer[i] = Math.min(answer[i], p) // 오른쪽 for문과 비교해서 최소값이 되는것만 return 함
}
}
return answer;
}
let str = "teachermode";
console.log(solution(str, 'e'));
</script>
</body>
</html>
Leave a comment