알고리즘 풀이

[JAVASCRIPT] 백준 1120번 문제 풀이

Lv1_junior_dev 2023. 2. 26. 16:32

❗ 풀이

let [X,Y] = require('fs').readFileSync('dev/stdin').toString().trim().split(" ");

let min = Y.length;

for (let i = 0; i <= Y.length - X.length; i++) {
  let diff = 0;
  for (let j = 0; j < X.length; j++) {
    if (X[j] !== Y[i+j]) {
      diff++;
    }
  }
  min = Math.min(min, diff);
}

console.log(min);

1. 최소 차이값을 min 변수에 저장

2. Y 문자열에서 X 문자열이 들어갈 수 있는 모든 위치를 탐색

3. 반복 시 현재 값들의 차이값을 계산

4. 최소 차이값 결과 출력

 

ex)

abc = X , abcd = Y 일 때 -> 길이 차이는 1이 나므로 2번만 반복하면됨

X[0] = a / Y[0] = a , X[1] = b /  Y[1] = b , X[2] = c / Y[2] = c 를 하나하나 탐색하며 비교 -> 차이값은 0

다음으로는 abcd를 0,1,2번 인덱스 값을 탐색하였으니 1,2,3번을 탐색함

X[0] = a / Y[1] = b , X[1] = b /  Y[2] = c , X[2] = c / Y[3] = d 를 하나하나 탐색하며 비교 -> 차이값은 3

 

반복문이 끝났을 때 0과 3을 비교했을 때 작은값을 min에 저장

min 결과 출력