본문 바로가기

정규표현식

(7)
URLs [백준 6324] https://www.acmicpc.net/problem/6324 url의 형식을 찾아주는 정규 표현식을 만들어 문제를 해결한다. import redef parse_url(url): # 정규 표현식 정의 pattern = r'^(http|ftp|gopher)://([a-zA-Z0-9._-]+)(:(\d+))?(/(.*))?$' match = re.match(pattern, url) if match: protocol = match.group(1) host = match.group(2) port = match.group(4) if match.group(4) else "" path = match.group(6) if matc..
Šifra [백준 20959] https://www.acmicpc.net/problem/20959 주어진 문자열에서 숫자들만 추출하면 된다. import re string = input().rstrip() numbers = set(re.findall(r'[0-9]+',string))print(len(numbers))
늑대와 올바른 단어[백준 13022] https://www.acmicpc.net/problem/13022 규칙에 맞는 문자열을 찾기위해 정규표현식을 사용한다. finditer를 사용해서 규칙에 맞는 부분들을 추출한다. import redef is_valid_wolf(word): # 정규표현식 패턴: w+, o+, l+, f+ 그룹을 추출 pattern = r'(w+)(o+)(l+)(f+)' matches = re.finditer(pattern, word) for match in matches: w_group, o_group, l_group, f_group = match.groups() # 각 그룹의 길이가 동일한지 확인 if len(w_group) != len(..
커맨드[백준 17838] https://www.acmicpc.net/problem/17838   import redef is_favorite_command(command): # 정규 표현식: AABBABB 형식 pattern = r'^([A-Z])\1([A-Z])\2\1\2\2$' match = re.match(pattern, command) return match is not Nonedef has_two_unique_characters(command): return len(set(command)) == 2 # 고유 문자 개수가 2개인지 확인def main(): T = int(input()) for _ in range(T): string = input().strip() ..
버그왕[백준 3447] https://www.acmicpc.net/problem/3447 정규표현식 사용할 때 'BUG'를 한 번에 1개씩만 제거 가능하니 반복문을 통해서 모두 찾아서 제거한다. import sys import recode=sys.stdin.readlines() #여러 줄을 정답으로 받고for i in code: #한 줄씩 검사하기 while True: result=re.sub('BUG','',i) #BUG가 들어있으면 없애기 #ABUBUGGB와 같은 경우는 AB가 되어야 하니까 while반복문으로 검사 if 'BUG' in result: #있으면 한번 제거한 결과를 가지고 또 검사하도록 i= result else: ..
염색체[백준 9342] https://www.acmicpc.net/problem/9342 정규표현식으로 패턴에 맞는 지 확인하면 된다. import redef check_chromosome(s): # 정규 표현식 패턴 pattern = r'^[A-F]?A+F+C+[A-F]?$' # 패턴에 맞으면 "Infected!", 아니면 "Good" return "Infected!" if re.match(pattern, s) else "Good"# 테스트 케이스 수 입력T = int(input())for _ in range(T): s = input().strip() result = check_chromosome(s) print(result)
String[ 백준 7120] https://www.acmicpc.net/problem/7120  정규식으로 연속된 문자들을 찾으면 된다. import redef correct_string(s): # 정규식을 사용하여 연속된 동일 문자를 하나로 바꾼다. corrected = re.sub(r'(.)\1+', r'\1', s) return corrected# 입력 받기input_string = input().strip()# 문자열 수정result = correct_string(input_string)# 결과 출력print(result)