728x90
https://www.acmicpc.net/problem/9996
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')
'알고리즘 > 백준 문제 풀이' 카테고리의 다른 글
[Python] 2684번 동전 게임 (0) | 2022.09.27 |
---|---|
[Python] 5525번 IOIOI (0) | 2022.09.27 |
[Python] 9342번 염색체 (0) | 2022.09.27 |
[Python] 21938번 영상처리 (0) | 2022.09.27 |
[Python] 1927번 최소 힙 / 11279번 최대 힙 / 11286번 절댓값 힙 (0) | 2022.09.26 |