본문 바로가기

백준 문제풀기/JAVA

[백준 1120 JAVA 자바] 문자열

문제가 조금 복잡하지만 해석하자면

두개의 문자열을 입력받아

앞의 문자열을 뒤에 문자열에 포함시키기 위해

최소 몇번 바꿔야하는지 구하는 문제입니다

 

XXX OOOOO가 입력되었다면

 

XXX

OOOOO

 

   XXX

OOOOO

 

      XXX

OOOOO

 

이렇게 3번의 경우를 계산해서

최소값을 찾읍시다

 

코드입니다

 

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.Arrays;
import java.util.StringTokenizer;

public class Main {
	public static void main(String[] args) throws IOException {
		BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
		StringTokenizer st = new StringTokenizer(br.readLine());
		
		String str1 = st.nextToken();
		String str2 = st.nextToken();
		
		int n = str1.length();
		int m = str2.length();
		
		int[] arr = new int[m-n+1];
		
		for(int i=0; i<=m-n; i++) {
			int count=0;
			for(int j=i;j<i+n;j++) {
				
				if(str1.charAt(j-i)!=str2.charAt(j)) {
					count += 1;
				}
				arr[i] = count;
			}
		}
		
		Arrays.sort(arr);
		
		System.out.println(arr[0]);
		
	}
}

if절이 핵심입니다

str1과 str2를 하나하나 비교해서

다른만큼 count해서 arr배열에 넣어줬고

 

arr의 최소값을 출력했습니다