본문 바로가기

알고리즘/백준 문제 풀이

[Python] 9996번 한국이 그리울 땐 서버에 접속하지

728x90

https://www.acmicpc.net/problem/9996

 

9996번: 한국이 그리울 땐 서버에 접속하지

총 N개의 줄에 걸쳐서, 입력으로 주어진 i번째 파일 이름이 패턴과 일치하면 "DA", 일치하지 않으면 "NE"를 출력한다. 참고로, "DA"는 크로아티어어로 "YES"를, "NE"는 "NO"를 의미한다.

www.acmicpc.net


 

22/09/13

 

 

이 문제 또한 정규 표현식을 사용하여 풀 수 있는 문제로, 왜 실버 3인지 이해가 안 됐었다.

 

근데 알고 보니 정규 표현식 말고 쉬운 방법이 있었는데, 양 끝만 비교하면 되는 방식으로, 훨씬 간단했다.


 

문제 접근 방식:

 

 

나는 정규 표현식으로 접근했다. 그러려면 먼저 패턴을 만들어 주어야 한다.

 

문제에서 주어진 내용은 'a*d'인 경우 *사이에 아무 문자가 올 수 있다고 했으므로, '*'를 기준으로 분리하고, join메서드를 사용해서 다시 합쳐주는데, 이때 '.*'으로 합쳐줌으로써 정규표현식 문법에 맞게 고쳐주었다.

 

이후 fullmatch메서드를 사용하여 확인해주었다.


아래는 내가 위의 접근 방식과 같이 작성한 파이썬 코드이다. 더보기를 누르면 확인할 수 있다.

더보기
# 9996번 한국이 그리울 땐 서버에 접속하지
# 정규표현식
import re
N = int(input())
p = re.compile('.*'.join(input().split('*')))
for _ in range(N):
    k = input()
    if p.fullmatch(k):
        print('DA')
    else:
        print('NE')