반응형
https://www.acmicpc.net/problem/1013
[ 문제풀이 ]
정규 표현식을 사용할 줄 알면 공짜인 문제이다. Java에서는 Pattern과 Matcher 클래스를 통해 정규 표현식을 사용할 수 있다.
주어진 패턴 (100+1+ | 01)+으로 Pattern을 만든 후 Matcher를 통해 입력받은 문자열을 분석해주면 된다.
Pattern의 형태는 다음과 같다.
String regex = "^(100+1+|01)+$";
간단하게 설명하자면 ^, $은 문자열의 시작과 끝을 의미하며, ()는 () 내부의 문자들을 하나의 문자로 취급해준다.
+는 해당 문자가 최소 1번 나와야 한다는 의미이고, |는 or 연산을 의미한다.
import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.InputStreamReader;
import java.io.OutputStreamWriter;
import java.util.regex.Matcher;
import java.util.regex.Pattern;
public class Main {
public static void main(String[] args) {
try (BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(System.out))) {
int T = Integer.parseInt(br.readLine());
String regex = "^(100+1+|01)+$";
Pattern pattern = Pattern.compile(regex);
while (T-- > 0) {
String input = br.readLine();
Matcher matcher = pattern.matcher(input);
bw.write(matcher.matches() ? "YES\n" : "NO\n");
}
} catch (Exception e) {
e.printStackTrace();
}
}
}
반응형
'Problem Solving > 백준' 카테고리의 다른 글
백준 1484 : 다이어트 (0) | 2021.08.08 |
---|---|
백준 1647 : 도시 분할 계획 (0) | 2021.08.07 |
백준 10159 : 저울 (0) | 2021.08.04 |
백준 7570 : 줄 세우기 (0) | 2021.08.03 |
백준 4195 : 친구 네트워크 (0) | 2021.08.02 |
댓글