[BOJ/Python] 9996 : 한국이 그리울 땐 서버에 접속하자

정나영·2024년 4월 25일
0

👉 문제 링크
👉 시행착오

1) 패턴이 항상 x*x 형태로 오는 줄 생각했다.
꼭 하나의 문자만 패턴인 것이 아니라 ab*cd 처럼 여러 개가 될 수 있다.

❌ 바꾼 코드

for i in range(len(pattern[0])):
        start += s[i]
    
    for i in range(len(pattern[1])):
        end += s[len(s)-(i+1)]

2) 패턴의 길이가 파일 이름보다 긴 경우를 고려하지 못했다.

위 코드로는 abc*def a 가 주어졌을 때 인덱스 에러가 발생한다.

❌ 바꾼 코드

if len(pattern[0]) <= len(s):
        for i in range(len(pattern[0])):
            start += s[i]
    
    if len(pattern[1]) <= len(s):
        for i in range(len(pattern[1])):
            end += s[len(s)-(i+1)]

3) ab*bd abd 의 경우를 생각하지 않았다.

위 코드로는 start에 'ab', end에 'bd'가 들어가게 되어 'b'가 중복이지만 이를 찾지 못한다.

❗️ 바꾼 코드

if len(pattern[0]) < len(s):
        for i in range(len(pattern[0])):
            start += s[i]
    
    if len(pattern[1]) <= len(s) - len(start):
        for i in range(len(pattern[1])):
            end += s[len(s)-(i+1)]

👉 전체 코드

n = int(input())
pattern = input().split('*')

for _ in range(n):
    s = input()
    start = ''
    end = ''

    if len(pattern[0]) < len(s):
        for i in range(len(pattern[0])):
            start += s[i]
    
    if len(pattern[1]) <= len(s) - len(start):
        for i in range(len(pattern[1])):
            end += s[len(s)-(i+1)]
    
    end = list(end)
    end.reverse()
    end = ''.join(end)
    
    if pattern[0] == start and pattern[1] == end:
        print("DA")
    else:
        print("NE")

0개의 댓글