본문 바로가기

Algorithm/코드 풀이

1013번: Contact [JAVA]

문제 설명

https://www.acmicpc.net/problem/1013

 

1013번: Contact

입력의 첫 줄에는 테스트 케이스의 개수 T가 주어진다. 그 다음 줄부터 각각의 테스트 케이스에 대해 전파를 표현하는, { 0, 1 }만으로 이루어진 문자열이 공백 없이 주어진다. 문자열 길이는 (1 ≤

www.acmicpc.net

풀이

 문제 해결을 직접 처리하려면 매우 복잡한데, 대부분의 프로그래밍 언어에서 이에 대한 해결을 지원해주기 때문에 문제 풀이가 크게 어렵진 않다. 바로 정규표현식을 활용하는 방법이다. 특히 문제에서 주어진 표현조차 애초에 정규표현식에서 사용하는 방법이기에, 문제에서 주어진 표현을 그대로 등록을 하고 순차대로 주어지는 테스트 케이스에 대해 단순히 해당 문자열이 매칭 되는지만을 파악하면 된다.

 

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