728x90
728x90
문제
https://www.acmicpc.net/problem/2671
접근 방법
비슷한 유형의 문제를 풀었던 기억이 있다.
처음에는 무지성으로 구현을 시도했고 실패했다.
이후 나름의 규칙으로 구현을 시도했으나 실패했다.
마지막으로, 이전에 정규식을 이용했던 것이 생각나 적용했더니 너무 간단하게 풀렸다.
풀이
- 문자열.matches() 내장 함수를 사용한다.
- matches의 인자로 정규식을 넣는다.
- "(100+1+|01)+"를 사용했다.
A+
- "반복"을 표현하며 A가 한번 이상 반복됨을 의미한다.
A|B
- "OR"을 표현하며 A 또는 B가 존재함을 의미한다.
코드
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
public class Main {
public static void main(String[] args) throws IOException {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
String input = br.readLine();
if (input.matches("(100+1+|01)+")) {
System.out.println("SUBMARINE");
} else {
System.out.println("NOISE");
}
}
}
728x90
728x90
'Algorithm Practice > Baekjoon' 카테고리의 다른 글
[JAVA/자바][백준 14939] 불 끄기 (1) | 2023.04.18 |
---|---|
[JAVA/자바][백준 1802] 종이 접기 (0) | 2023.02.21 |
[JAVA/자바][백준 2412] 암벽 등반 (0) | 2023.02.16 |