9342번: 염색체
상근이는 생명과학 연구소에서 염색체가 특정한 패턴인지를 확인하는 일을 하고 있다. 염색체는 알파벳 대문자 (A, B, C, ..., Z)로만 이루어진 문자열이다. 상근이는 각 염색체가 다음과 같은 규칙
www.acmicpc.net
문제
상근이는 생명과학 연구소에서 염색체가 특정한 패턴인지를 확인하는 일을 하고 있다. 염색체는 알파벳 대문자 (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"을 출력한다.
코드
import re
def check(s):
p = re.compile('^[A-F]{,1}A+F+C+[A-F]{,1}$')
res = p.match(s)
return "Good" if res == None else "Infected!"
for _ in range(int(input())):
print(check(input()))
정규표현식을 이용하여 풀이하였다.
정규 표현식(Regular Expressions)은 복잡한 문자열을 처리할 때 사용하는 기법으로, 파이썬만의 고유 문법이 아니라 문자열을 처리하는 모든 곳에서 사용한다.
정규표현식에 관한 내용은 다음의 링크에 설명이 잘되어 있으니 참고하면 좋다.
08장 정규표현식
필자는 정규 표현식을 이 책 《점프 투 파이썬》에 포함시켜야 할지 오랜시간 고민했다. 왜냐하면 정규 표현식은 꽤 오랜 기간 코드를 작성해 온 프로그래머라도 잘 모를 수 있는 …
wikidocs.net
각 문제의 조건에 따라서 정규표현식을 작성해보았는데 하나씩 살펴보자면 다음과 같다.
- 문자열은 {A, B, C, D, E, F} 중 0개 또는 1개로 시작해야 한다.
=> [A-F]{,1} - 그 다음에는 A가 하나 또는 그 이상 있어야 한다.
=> A+ - 그 다음에는 F가 하나 또는 그 이상 있어야 한다.
=> F+ - 그 다음에는 C가 하나 또는 그 이상 있어야 한다.
=> C+ - 그 다음에는 {A, B, C, D, E, F} 중 0개 또는 1개가 있으며, 더 이상의 문자는 없어야 한다.
=>[A-F]{,1}$
'문제풀이 > 문자열' 카테고리의 다른 글
[Python/파이썬] 백준 20437번 문자열 게임 2 (0) | 2023.03.27 |
---|---|
[Python/파이썬] 백준 17413번 단어 뒤집기 2 (0) | 2023.03.25 |
[Python/파이썬] 백준 20291번 파일 정리 (0) | 2023.03.25 |
[Python/파이썬] 2022 KAKAO BLIND RECRUITMENT - k진수에서 소수 개수 구하기 (0) | 2022.08.01 |
[Python/파이썬] 백준 15829번 Hashing (0) | 2022.01.22 |