서버에 접속하려면 사용자 이름이 정해진 패턴과 일치해야 한다.
패턴은 다음의 형태를 가진다:
* 하나로만 구성된 문자열 *은 어떤 문자열(길이가 0 이상)로도 대체될 수 있음N개의 문자열이 주어졌을 때, 각 문자열이 해당 패턴에 맞는지 판별하는 프로그램을 작성하자.
// 입력
3
a*d
abcd
anestonestod
facebook
//출력
DA
DA
NE
패턴을 정규표현식으로 변환하여 해결할 수 있습니다.
* 문자를 [a-z]*로 변환^, $를 붙여줌Pattern.matches()를 이용해 간단히 일치 여부를 판별할 수 있습니다import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.OutputStreamWriter;
import java.util.regex.Pattern;
public class Main {
public static void main(String[] args) throws IOException {
BufferedReader bf = new BufferedReader(new InputStreamReader(System.in));
BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(System.out));
int N = Integer.parseInt(bf.readLine());
String str = bf.readLine();
// 정규표현식 패턴 생성
String pattern = "^";
for (int i = 0; i < str.length(); i++) {
if (str.charAt(i) != '*') {
pattern += str.charAt(i);
} else {
pattern += "[a-z]*";
}
}
pattern += "$";
// 입력 문자열과 패턴 일치 여부 확인
for (int i = 0; i < N; i++) {
String name = bf.readLine();
if (Pattern.matches(pattern, name)) {
bw.write("DA\n");
} else {
bw.write("NE\n");
}
}
bw.flush();
}
}
*은 문자열로 대체 가능 → [a-z]*