[알고리즘] 가장 짧은 문자거리

호두파파·2022년 1월 24일
0

알고리즘 연습

목록 보기
43/60


한 개의 문자열 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));

profile
안녕하세요 주니어 프론트엔드 개발자 양윤성입니다.

0개의 댓글