알고리즘

[백준, 파이썬, 9342번] 염색체

hminor 2023. 9. 15. 11:00

 

풀이

 

  • 초기 생각한 방법은
  • 초기 값 확인 이후 사이 값에 대한 조건을 추가해 확인했지만
  • 역시 고려해야할 조건들이 생각보다 더 있어서
  • 정규식을 생각 후 풀었는데
  • 보통 GPT한테 이렇게 정규식 작성해줘로만 했지
  • 직접 작성한적은  별로 없었어서 하나씩 적용하며 해봤는데 
  • 진짜 유용한 것 같다!
  • 우선 import re를 사용해 정규표현식을 사용할 수 있다.
  • 이후 pattern을 확인해보자면
    • [A-F]?
      • [A-F]는 "A와 F 중" 을 의미하며
      • ? 는 있거나 없거나를 의미
    • A+
      • A가 최소 하나 이상 반복을 의미
      • 이후 F와 C 를 확인 할 수 있음.
    • $
      • 문자의 종료를 의미하여 
      • 이후 뒤에는 아무것도 없다를 선언해야
      • AFCP <-- 해당 조건과 같은 경우를 해결할 수 있다.
  • 그리고 정규 표현식은 
    • re.match(정규 표현식 패턴, 대상) 으로 비교할 수 있다.

 

import sys
import re
input = sys.stdin.readline

for _ in range(int(input())):
    chromosome = input().rstrip('\n')
    pattern = "[A-F]?A+F+C+[A-F]?$"
    if re.match(pattern,chromosome): print('Infected!')
    else: print('Good')