BOJ 9342 - 염색체 (Python)

조민수·2024년 2월 12일
0

BOJ

목록 보기
5/64
post-custom-banner

S3, 문자열


문제 설명

상근이는 생명과학 연구소에서 염색체가 특정한 패턴인지를 확인하는 일을 하고 있다. 염색체는 알파벳 대문자 (A, B, C, ..., Z)로만 이루어진 문자열이다. 상근이는 각 염색체가 다음과 같은 규칙을 만족하는지 검사해야 한다.

  • 문자열은 {A, B, C, D, E, F} 중 0개 또는 1개로 시작해야 한다.
  • 그 다음에는 A가 하나 또는 그 이상 있어야 한다.
  • 그 다음에는 F가 하나 또는 그 이상 있어야 한다.
  • 그 다음에는 C가 하나 또는 그 이상 있어야 한다.
  • 그 다음에는 {A, B, C, D, E, F} 중 0개 또는 1개가 있으며, 더 이상의 문자는 없어야 한다.

문자열이 주어졌을 때, 위의 규칙을 만족하는지 구하는 프로그램을 작성하시오.

입력

첫째 줄에 테스트 케이스의 개수 T ≤ 20 이 주어진다. 각 테스트 케이스는 한 줄로 이루어져 있으며, 최대 200개의 알파벳 대문자로 이루어진 문자열이 주어진다.

출력

각 테스트 케이스에 대해서, 문제의 규칙을 지키는 문자열인 경우에는 "Infected!"를, 아닌 경우에는 "Good"을 출력한다.


풀이

  • 처음엔 파싱해서 풀려고 했는데 아무리 생각해도 파싱이 너무 복잡했다.
  • 정규표현식에 아직 익숙하지 못하다.
from sys import stdin
import re

T = int(stdin.readline())

check = re.compile('^[A-F]?A+F+C+[A-F]?$')

for _ in range(T):
    words = stdin.readline().rstrip()
    if check.match(words) == None:
        print("Good")
    else:
        print("Infected!")

정규 표현식 정리

^ : 해당 패턴으로 시작
? : 해당 패턴이 0번 or 1번
$ : 해당 패턴으로 종료
+ : 해당 패턴이 하나 이상

profile
사람을 좋아하는 Front-End 개발자
post-custom-banner

0개의 댓글