본문 바로가기
PS 문제 풀이/Baekjoon

[BOJ] 백준 1120 문자열

by 까망 하르방 2021. 2. 22.
반응형

출처: https://www.acmicpc.net/problem/1120

Approach

문자열을 일일이 비교해서 차이를 최대로 하는 구간을 찾는 문제입니다.

주어지는 문자열 A <= B이며, 문자열 A에 앞,뒤로 임의의 문자를 추가할 수 있습니다.

그렇기에 처음 A가 B의 어떤 부분에서 불일치하는 문자가 최소가 되는지 찾으면 됩니다.

[문자열] KMP 알고리즘 

 

[문자열] KMP 알고리즘

KMP 알고리즘이란? 『KMP 알고리즘』 문자열을 검색할 때, 불필요한 반복을 줄이기 위해 검색 문자열의 접두사와 접미사의 중복 길이를 이용한 알고리즘 입니다. (※ Knuth–Morris–Pratt algorithm, KMP)

zoosso.tistory.com

 

A = abc,  B = xxbzzz

A 문자열을 우측으로 한칸씩 이동하며 일일이 비교

A = xabczz 가 되었을 때 만족.


import java.util.Scanner;
 
public class Main {    
    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
         
        char A[] = sc.next().toCharArray();
        char B[] = sc.next().toCharArray();
         
        int answer = Integer.MAX_VALUE;
        // 문자열 길이 A <= B
        for(int i=0; i<=B.length - A.length; i++) {
            int cnt = 0;
            int k = i;
            for(int j=0; j<A.length; j++) {
                if(A[j] != B[k+j]) cnt++;
            }
            answer = Math.min(cnt, answer);
        }
        System.out.println(answer);
    }
}

 

반응형

'PS 문제 풀이 > Baekjoon' 카테고리의 다른 글

[BOJ] 백준 17406 배열 돌리기 4  (0) 2021.02.22
[BOJ] 백준 1786 찾기  (0) 2021.02.22
[BOJ] 백준 14620 꽃길  (0) 2021.02.22
[BOJ] 백준 7569 토마토  (0) 2021.02.22
[BOJ] 백준 7576 토마토  (0) 2021.02.22

댓글