문제 설명
https://www.acmicpc.net/problem/1013
풀이
문제 해결을 직접 처리하려면 매우 복잡한데, 대부분의 프로그래밍 언어에서 이에 대한 해결을 지원해주기 때문에 문제 풀이가 크게 어렵진 않다. 바로 정규표현식을 활용하는 방법이다. 특히 문제에서 주어진 표현조차 애초에 정규표현식에서 사용하는 방법이기에, 문제에서 주어진 표현을 그대로 등록을 하고 순차대로 주어지는 테스트 케이스에 대해 단순히 해당 문자열이 매칭 되는지만을 파악하면 된다.
public class Main {
static int T;
static StringBuilder answer = new StringBuilder();
public static void main(String[] args) throws IOException {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
T = Integer.parseInt(br.readLine());
Pattern pattern = Pattern.compile("(100+1+|01)+");//정규표현식 등록
for (int i = 0; i < T; i++) {
String signal = br.readLine();
Matcher matcher = pattern.matcher(signal);//문자열 등록
if (matcher.matches()) {//매칭 결과 확인
answer.append("YES\n");
} else {
answer.append("NO\n");
}
}
System.out.println(answer.toString());
}
}
결과
'Algorithm > 코드 풀이' 카테고리의 다른 글
14906번: 스러피 [JAVA] (0) | 2021.11.02 |
---|---|
9342번: 염색체 [JAVA] (0) | 2021.11.02 |
20040번: 사이클 게임 [JAVA] (0) | 2021.10.09 |
12757번: 전설의 JBNU [JAVA] (0) | 2021.10.03 |
1501번: 영어 읽기 [JAVA] (0) | 2021.10.03 |