코딩테스트/BOJ

[BOJ] 1120 문자열 - JAVA

5월._. 2022. 5. 31.
728x90

1. 문제

 

1120번: 문자열

길이가 N으로 같은 문자열 X와 Y가 있을 때, 두 문자열 X와 Y의 차이는 X[i] ≠ Y[i]인 i의 개수이다. 예를 들어, X=”jimin”, Y=”minji”이면, 둘의 차이는 4이다. 두 문자열 A와 B가 주어진다. 이때, A의

www.acmicpc.net

길이가 N으로 같은 문자열 X와 Y가 있을 때, 두 문자열 X와 Y의 차이는 X[i] ≠ Y[i]인 i의 개수이다. 예를 들어, X=”jimin”, Y=”minji”이면, 둘의 차이는 4이다.

두 문자열 A와 B가 주어진다. 이때, A의 길이는 B의 길이보다 작거나 같다. 이제 A의 길이가 B의 길이와 같아질 때 까지 다음과 같은 연산을 할 수 있다.

  1. A의 앞에 아무 알파벳이나 추가한다.
  2. A의 뒤에 아무 알파벳이나 추가한다.

이때, A와 B의 길이가 같으면서, A와 B의 차이를 최소로 하는 프로그램을 작성하시오.


2. 풀이

A와 B를 입력받은 뒤 B기준으로 시작지점을 조절해서 다른 값을 체크한다.

A는 항상 0부터, B는 시작지점+현재a인덱스로 계산해서 비교해야한다.

import java.io.*;
import java.util.*;

public class BOJ_1120_문자열 {
   public static void main(String[] args) throws IOException {
      StringTokenizer st = new StringTokenizer(new BufferedReader(new InputStreamReader(System.in)).readLine());
      String A = st.nextToken();
      String B = st.nextToken();

      int ans = A.length();//최대값
      int cnt;
      for(int i=0;i<B.length()-A.length()+1;i++){
         cnt = 0;
         for(int j=0;j<A.length();j++){
            if(A.charAt(j) != B.charAt(i+j)) cnt++;
         }
         if(cnt<ans) ans = cnt;
      }

      System.out.println(ans);

   }
}

3. 결과

'코딩테스트 > BOJ' 카테고리의 다른 글

[BOJ] 1058 친구 - JAVA  (0) 2022.06.05
[BOJ] 1024 수열의 합 - JAVA  (0) 2022.06.04
[BOJ] 13458 시험감독 - JAVA  (0) 2022.05.23
[BOJ] 11559 PuyoPuyo - JAVA  (0) 2022.05.22
[BOJ] 16235 나무재테크 - JAVA  (0) 2022.05.21

댓글