BOJ 1120

2020-04-17

위 문제는 백준 사이트의 알고리즘 1120 문제에 관한 설명입니다.


문제

길이가 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의 차이를 최소로 하는 프로그램을 작성하시오.

입력

첫째 줄에 A와 B가 주어진다.

A와 B의 길이는 최대 50이고, A의 길이는 B의 길이보다 작거나 같고, 알파벳 소문자로만 이루어져 있다.

출력

A와 B의 길이가 같으면서, A와 B의 차이를 최소가 되도록 했을 때, 그 차이를 출력하시오.

import java.util.Scanner;

public class Main{
	public static void main(String[] args) {
		Scanner scanner =new Scanner(System.in);
		String A = scanner.next();
		String B = scanner.next();
		
		int max = 0;
		
		for(int i = 0 ; i<B.length()-A.length()+1;i++)
		{
			String tempB = B.substring(i,i+A.length());
			int same=0;
			for(int j =0 ; j < tempB.length();j++)
				if(tempB.charAt(j)==A.charAt(j)) same++;
			if(same>max) max = same;
		}
		System.out.println(A.length()-max);
	}
}
  1. 문자열 A와 B를 받는다.

  2. B의 길이 - A의 길이 + 1 만큼 반복시킴

    B(bbbbaa) - A(bbbb)일 경우 갯수가 차이나는건 2(aa)만큼의 차이니까 반복시켜주며 확인함

3.tempB는 B에서 A의길이 만큼 잘라주면서 반복함

B(bbbbaa)에서 잘라내면 tempB(bbbb) 와 A(bbbb) 비교

  1. 같은지 판단

  2. 가장 긴차이가 나는것 판단 후 출력시에는 A의 길이 - max를 한 값은 차이값이라 볼 수있음

(참고로 min값을 구해서 출력해도됨)

문자열