본문 바로가기
Problem Solving/백준

백준 1013 : Contact

by Libi 2021. 8. 5.
반응형

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

 

1013번: Contact

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

www.acmicpc.net

[ 문제풀이 ]

정규 표현식을 사용할 줄 알면 공짜인 문제이다. 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

댓글