본문 바로가기
Algorithms/백준

[백준_2671]잠수함식별 with Python

by jeomn 2021. 6. 30.

백준(BOJ) 문자열 문제집: 잠수함식별(골드 5)

문제 출처: https://www.acmicpc.net/problem/2671

 

2671번: 잠수함식별

입력에 들어있는 스트링을 읽고, 이것이 잠수함의 엔진소리를 나타내는 스트링인지 아니면 그냥 물속의 잡음인지를 판정한 후, 잠수함의 엔진 소리에 해당하는 스트링이면 "SUBMARINE"을 출력하고

www.acmicpc.net

 

1. 알고리즘

지난번 Contact와 동일...정규표현식으로 풀면 되는 문제. Contact 때는 표현식 그대로 주더니, 이번엔 +가 ~로 바뀐 것 외에 표현 동일...

  • 문제에서 주어진 조건을 컴파일, 패턴 생성
  • 입력받은 문자열이 패턴과 일치하는 지 확인
    • fullmatch 함수 사용(문자열의 처음부터 끝까지 패턴에 일치되는 지를 확인해주는 함수)
      • match가 되면 match된 match객체 반환
      • match가 되지 않으면 None 객체 반환
  • 일치하면 'SUBMARINE', 일치하지 않으면 'NOISE' 출력

 

2. 유의사항

 

3. 어려웠던 점, 해결방법

 

4. 소스코드

자세한 설명은 주석 참고

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
import sys
import re
 
 
input_func = sys.stdin.readline
if __name__ == '__main__':
    input_string = str(*map(str, input_func().split()))
    
    regex = re.compile('(100+1+|01)+')          #규칙 컴파일, 패턴 생성
    is_match = regex.fullmatch(input_string)    #fullmatch함수로 패턴 일치 확인
    
    if is_match:                #패턴 일치 시 
        print('SUBMARINE')      #'SUBMARINE' 출력
    else:                       #패턴 불일치 시
        print('NOISE')          #'NOISE' 출력
cs

 

5. 고민

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

[백준_4358]생태학 with Java  (0) 2021.08.04
[백준_12904]A와 B with Python  (0) 2021.06.30
[백준_4358]생태학 with Python  (0) 2021.06.24
[백준_1013]Contact with Python  (0) 2021.06.24
[백준_1747]소수&팰린드롬 with Python  (0) 2021.06.23

댓글