백준 16172 - 나는 친구가 적다
Updated:
Java
16172 번 - 나는 친구가 적다
문제
접근 방법
코드
import java.util.*;
import java.io.*;
public class Main {
	static int n, result;
	public static void main(String[] args) throws IOException {
		BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
		String S = br.readLine();
		String K = br.readLine();
		S = S.replaceAll("[0123456789]", "");	// 정규식으로 숫자를 없앰
		int sLen = S.length();
		int kLen = K.length();
		if(sLen < kLen) {
			System.out.println(0);
			br.close();
			return;
		}
		int[] pi = new int[kLen];
		char[] text = S.toCharArray();
		char[] patt = K.toCharArray();
		int j = 0;
		for(int i = 1; i < kLen; i++) {
			while(j > 0 && patt[i] != patt[j]) {
				j = pi[j - 1];
			}
			if(patt[i] == patt[j]) {
				pi[i] = ++j;
			}
		}
		boolean isOk = false;
		for(int i = 0; i < sLen; i++) {
			while(j > 0 && text[i] != patt[j]) {
				j = pi[j-1];
			}
			if(text[i] == patt[j]) {
				if(j == kLen - 1) {
					isOk = true;
					break;
				}
				else
					j++;
			}
		}
		System.out.println(isOk ? 1 : 0);
    	br.close();
	}
	static int stoi(String str) {
    	return Integer.parseInt(str);
    }
}
총평
후기
replaceAll을 사용하여 정규 표현식을
