백준 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을 사용하여 정규 표현식을