난이도
골드 V
코드
문자열 구현 방식으로 하면 너무 복잡할거 같았다.
정규식을 이용해서 문제를 해결하였다.
import sys
import re
input=sys.stdin.readline
word=input().rstrip()
pattern=re.compile('(100+1+|01)+')
res=pattern.fullmatch(word)
if res:
print("SUBMARINE")
else:
print("NOISE")
정규표현식 문법 정리
- . : 어떤 글자
- ? : 바로 앞 문자열 0개 또는 1개 반복, 즉 나오거나 안나오거나 (ex) BA? : B, BA
- [ ] : 문자셋, 괄호 안의 어떤 문자든 (ex) [ABC] : A 또는 B 또는 C
- * : 없거나 있거나 많거나
- + : 하나 또는 많이
- {n} : n번 반복
- {min,} : 최소
- {min,max} : 최소 그리고 최대
- re.compile : 정규식을 컴파일한다
- split(정규표현식,문자열) : 리스트를 반환해줌.
- group() : 매칭된 문자열을 한꺼번에 반환함
- match() : 문자열 처음부터 정규식과 매치되는지 조사함
- search() : 문자열 전체를 검색하여 정규식과 매치되는지 검사함
문제 링크
https://www.acmicpc.net/problem/2671
2671번: 잠수함식별
입력에 들어있는 스트링을 읽고, 이것이 잠수함의 엔진소리를 나타내는 스트링인지 아니면 그냥 물속의 잡음인지를 판정한 후, 잠수함의 엔진 소리에 해당하는 스트링이면 "SUBMARINE"을 출력하고
www.acmicpc.net
'알고리즘' 카테고리의 다른 글
BOJ 13417번(카드 문자열) (0) | 2023.04.02 |
---|---|
BOJ 9996번(한국이 그리울 땐 서버에 접속하지) (0) | 2023.03.31 |
BOJ 2580번(스도쿠) (0) | 2023.03.30 |
BOJ 18430번(무기 공학) (0) | 2023.03.28 |
BOJ 16922번(로마 숫자 만들기) (0) | 2023.03.27 |