잠수함 식별

2017-01-12 02:00:47 | 조회수 1267



※이 설명은 공식 솔루션이 아닌 작성자의 개인적인 솔루션입니다.


실제로 스트링이 일치하는지 찾는 경우에는 구현을 해주셔야 합니다. 하지만 STL을 사용할 수 있는 경우, 정규표현식을 통해 이를 해결할 수 있습니다. 정규표현식을 사용하는 것은 나쁜 것이 아닙니다. 이미 수많은 언어에서는 정규표현식을 제공하고 있으며, C++에서도 <regex> 파일을 include하여 정규표현식 매칭을 사용할 수 있습니다.


문제에서 주어진 식의 정규표현식은(100[0]{0,}1[1]{0,}|01){1,} 입니다.


※해당 소스코드는 참고용이며, 최적화 된 공식 솔루션 소스가 아닙니다. 이 소스를 그대로 복사하여 이용, 또는 제출하는 행위에 대한 불이익은 책임지지 않습니다.

#include<iostream>
#include<string>
#include<regex>
using namespace std;

int main()
{
    string s;
    regex e("(100[0]{0,}1[1]{0,}|01){1,}");

    while (1)
    {
        cin >> s;
        if (cin.fail()) break;
        if (regex_match(s, e)) cout << "SUBMARINE\n";
        else cout << "NOISE\n";
    }
}


잠수함 식별 - 알고리즘닷컴
여기서는 https://acmicpc.net 의 문제를 기반으로 한 설명과 소스코드를 포스팅합니다.

36 개의 글