어흥
[백준 1013] Contact (C++, Java) 본문
728x90
반응형
문제 링크: www.acmicpc.net/problem/1013
1. 주의할 점
- Automata 혹은 정규표현식 사용법에 대해 알고 있어야 한다
2. 구현
- 위에서 언급한 조건을 정규표현식으로 나타낸다. 단, 이때 (100+1+|01)+가 아닌 [100+1+|01]+로 할 경우, 오답이 발생한다([]의 경우, 1개만 만족해도 True를 반환하기 때문)
- matches() 함수를 사용하여 패턴과 일치하는지 Boolean값으로 Return받고 삼항연산 처리를 수행한다
[C++]
#include <iostream>
#include <string>
#include <regex>
using namespace std;
int main() {
ios_base::sync_with_stdio(false); cin.tie(NULL); cout.tie(NULL);
int test;
cin>>test;
for(int t=0;t<test;t++){
string str;
cin>>str;
if(regex_match(str,regex("(100+1+|01)+"))) cout <<"YES\n";
else cout << "NO\n";
}
return 0;
}
[JAVA]
import java.util.*;
import java.lang.*;
import java.io.*;
import java.util.regex.Pattern;
public class Main {
public static void main (String[] args) throws java.lang.Exception {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
int test = Integer.parseInt(br.readLine());
for(int t=0;t<test;t++){
String str = br.readLine().trim();
String ptn="(100+1+|01)+";
System.out.println(str.matches(ptn)? "YES" : "NO");
}
}
}
[참고 문헌]
- www.cplusplus.com/reference/regex/
- www.w3schools.com/java/java_regex.asp
728x90
반응형
'알고리즘 > 백준' 카테고리의 다른 글
[백준 1789] 수들의 합 (C++) (0) | 2021.03.31 |
---|---|
[백준 2671] 잠수함식별 (C++, Java) (0) | 2021.03.30 |
[백준 13144] List of Unique Numbers (C++) (0) | 2021.03.26 |
[백준 11000] 강의실 배정 (C++) (0) | 2021.03.26 |
[백준 2982] 국왕의 방문 (C++) (0) | 2021.03.26 |
Comments