반응형

www.acmicpc.net/problem/1013

 

1013번: Contact

입력의 첫 줄에는 테스트 케이스의 개수 T가 주어진다. 그 다음 줄부터 각각의 테스트 케이스에 대해 전파를 표현하는, { 0, 1 }만으로 이루어진 문자열이 공백 없이 주어진다. 문자열 길이는 (1 ≤

www.acmicpc.net

 

해결 방법 : 정규표현식

  • 정규표현식 fullmatch로 전체 문자열이 해당 포맷으로 구성되는지 판별하면 된다.
import sys
input = sys.stdin.readline
import re

def solution(s):
    c = re.compile(r'(100+1+|01)+')
    if c.fullmatch(s):
        return "YES"
    return "NO"

if __name__ == '__main__':
    n = int(input())
    for i in range(n):
        result = solution(input().strip())
        print(result)

 

 

  • 처음에는 다음과 같이 match를 이용해서 구현해봤는데 알 수 없는 이유로 몇몇 테스트케이스를 통과하지 못한다.
    • 정규표현식 +는 탐욕적 수량자이기 때문에 match 판단 이후, (match.group() == s)하여 match된 문자열이 원본 문자열과 일치하는지 확인하는식으로 했었다. 논리상 맞는 구현 같은데 이유를 잘 모르겠다. match의 경우 검사 가능 횟수가 제한되어 있는건지..(혹시 이유를 아는분이 계시다면 댓글로 알려주시면 감사드리겠습니다)
    c = re.compile(r'(100+1+|01)+')
    if c.match(s):
        if c.match(s) == s:
        	return "YES"
    return "NO"

 

반응형

'IT study > 알고리즘 문제 풀이' 카테고리의 다른 글

백준 2579 : 계단 오르기  (0) 2021.05.13
백준 11727 : 2 * n 타일링 2 (feat. 11726 : 2 * n 타일링)  (0) 2021.05.13
기둥과 보 설치*  (0) 2021.05.11
자물쇠와 열쇠*  (0) 2021.05.10
블록 게임*  (0) 2021.05.10

+ Recent posts