본문 바로가기
알고리즘

BOJ 2671번(잠수함 식별)

by eunyoung 2023. 3. 31.

난이도


골드 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