BOJ/πŸ₯ˆ

β˜…Regular Expression 쀑상급 - 2문제()β˜…

metamong 2023. 8. 14.

β˜… μ •κ·œν‘œν˜„μ‹(Regular Expression)은 μ–΄λ–»κ²Œ μ“Έ 수 μžˆλŠ” 지 ν•¨μˆ˜λ₯Ό 적절히 μ‚¬μš© / μ •κ·œν‘œν˜„μ‹ 문법을 μ•Œλ©΄ λœλ‹€


β˜… 9342 염색체 β˜…

 

import re,sys
input=sys.stdin.readline

for _ in range(int(input().strip())):
    chromosome = input().strip()
    if re.match('^[ABCDEF]?A+F+C+[A,B,C,D,E,F]?$',chromosome): print('Infected!')
    else: print('Good')

 

πŸ¦– μ •κ·œν‘œν˜„μ‹ 문법 μ°¨λ‘€λŒ€λ‘œ μž‘μ„±ν•˜μžλ©΄!

β‘  λ¬Έμžμ—΄μ€ {A, B, C, D, E, F} 쀑 0개 λ˜λŠ” 1개둜 μ‹œμž‘ν•΄μ•Ό ν•œλ‹€ → ^[ABCDEF]?

β‘‘ κ·Έ λ‹€μŒμ—λŠ” Aκ°€ ν•˜λ‚˜ λ˜λŠ” κ·Έ 이상 μžˆμ–΄μ•Ό ν•œλ‹€ A+

β‘’ κ·Έ λ‹€μŒμ—λŠ” Fκ°€ ν•˜λ‚˜ λ˜λŠ” κ·Έ 이상 μžˆμ–΄μ•Ό ν•œλ‹€ F+

β‘£ κ·Έ λ‹€μŒμ—λŠ” Cκ°€ ν•˜λ‚˜ λ˜λŠ” κ·Έ 이상 μžˆμ–΄μ•Ό ν•œλ‹€ C+

β‘€ κ·Έ λ‹€μŒμ—λŠ” {A, B, C, D, E, F}쀑 0개 λ˜λŠ” 1κ°œκ°€ 있으며, 더 μ΄μƒμ˜ λ¬ΈμžλŠ” μ—†μ–΄μ•Ό ν•œλ‹€ [ABCDEF]?$

 

μ‹œμž‘: ^ / 끝: $ / μ—¬λŸ¬ 개 쀑 ν•œ 개 [] / 0개 λ˜λŠ” 1개: ? / 1개 이상: +

 

πŸ¦– re.match()둜 검사 μ—¬λΆ€ 확인!


β˜… 9996 ν•œκ΅­μ΄ 그리울 땐 μ„œλ²„μ— μ ‘μ†ν•˜μ§€ β˜…

 

import re,sys
input=sys.stdin.readline
N=int(input())
before_exp = input().strip()
exp1='^'+before_exp.replace('*','[a-z]*')+'$'
exp2='^'+before_exp.replace('*',' ')+'$'

for _ in range(N):
    name = input().strip()
    if re.match(exp1,name) or re.match(exp2,name): print('DA')
    else: print('NE')

 

πŸ¦– μ‹œμž‘ν•˜κ³  λλ‚œλ‹€λŠ” ^와 $ν‘œμ‹œ ν•„μˆ˜

β‘  μ•ŒνŒŒλ²³ μ†Œλ¬Έμž 0개 이상 → [a-z]*

β‘‘ 빈 λ¬Έμžμ—΄ ' '

 

0개 이상: *

 

πŸ¦– 두 쑰건쀑에 1개만 μΌμΉ˜ν•˜λ©΄ λ˜λ―€λ‘œ or ν‚€μ›Œλ“œ μ‚¬μš©


 

 

 

 

 

 

 

 

 

 

 

λŒ“κΈ€