728x90
https://www.acmicpc.net/problem/9342
22/09/13
정규 표현식을 사용하여 쉽게 풀은 문제로, 개인적으로 정규 표현식 자체가 어려운 내용이어서 골드 5부터 시작하는데, 이게 왜 실버 3에 위치해 있는지 의문인 문제였다.
문제 접근 방식:
정규 표현식을 사용하여 풀었다. 만약 정규 표현식에 대하여 잘 모른다면, 박응용 저자님의 점프 투 파이썬을 참고하면 도움이 많이 될 것이다.
- 문자열은 {A, B, C, D, E, F} 중 0개 또는 1개로 시작해야 한다.
- 그 다음에는 A가 하나 또는 그 이상 있어야 한다.
- 그다음에는 F가 하나 또는 그 이상 있어야 한다.
- 그다음에는 C가 하나 또는 그 이상 있어야 한다.
- 그다음에는 {A, B, C, D, E, F} 중 0개 또는 1개가 있으며, 더 이상의 문자는 없어야 한다.
조건이 다음과 같으므로, 이 조건에 맞는 정규 표현식을 세웠다.
그러면 '[A-F]?A+F+C+[A-F]?'이 패턴이 되는데, 이를 이용하여 fullmatch메서드를 진행시켜주면 끝이다.
아래는 내가 위의 접근 방식과 같이 작성한 파이썬 코드이다. 더보기를 누르면 확인할 수 있다.
더보기
# 9342번 염색체
# 정규표현식
import re
p = re.compile('[A-F]?A+F+C+[A-F]?')
N = int(input())
for _ in range(N):
k = input()
if p.fullmatch(k):
print('Infected!')
else:
print('Good')
'알고리즘 > 백준 문제 풀이' 카테고리의 다른 글
[Python] 5525번 IOIOI (0) | 2022.09.27 |
---|---|
[Python] 9996번 한국이 그리울 땐 서버에 접속하지 (0) | 2022.09.27 |
[Python] 21938번 영상처리 (0) | 2022.09.27 |
[Python] 1927번 최소 힙 / 11279번 최대 힙 / 11286번 절댓값 힙 (0) | 2022.09.26 |
[Python] 2491번 수열 (0) | 2022.09.26 |