문제 풀이: https://www.acmicpc.net/problem/2671

 

정규식을 쓰면 됩니다. 친절하게도 문제에 정규식을 제시해줍니다. ~를 +로 바꾸기만 하면 정규식 완성입니다.

정규식 매칭할때는 full match하는 점을 유의해주세요

 

정규식을 쓰지 않고 풀려면 직접 DFA를 만들어서 풀어야 합니다.

#pragma GCC optimize ("Ofast")

#define _CRT_SECURE_NO_WARNINGS
#define _SILENCE_CXX17_C_HEADER_DEPRECATION_WARNING
#include <bits/stdc++.h>
using namespace std;


int main()
{
#ifndef ONLINE_JUDGE
	freopen("input.txt", "r", stdin);
#endif

	ios_base::sync_with_stdio(false);
	cin.tie(nullptr);
	cout.tie(nullptr);

	std::regex submarine("(100+1+|01)+");
	string s;
	cin >> s;

	cout << (regex_match(s, submarine) ? "SUBMARINE\n" : "NOISE\n");

	return 0;
}
반응형

'Online Judge > 백준' 카테고리의 다른 글

[백준][C++] 10814: 나이순 정렬  (0) 2020.07.06
[백준][C++] 3107: IPv6  (0) 2020.07.06
[백준][C++] 2866: 문자열 잘라내기  (0) 2020.07.04
[백준][C++] 1089: 엘리베이터  (0) 2020.07.03
[백준][C++] 4836: 춤  (0) 2020.07.02