Daily/Coding Test

[백준][문자열] 한국이 그리울 땐 서버에 접속하지

타락파워개발자 2025. 4. 11. 16:08

오늘의 학습 키워드

문자열

 

오늘의 회고

🌱 오늘의 문제

https://www.acmicpc.net/problem/9996

N개의 문자열에 대해 패턴과 일치하는지 확인하는 문제이다. 일치하면 DA, 그렇지 않으면 NE를 출력한다.

 

판별할 문자열의 개수 N이 먼저 주어진다.

다음으로 판별 기준이 될 패턴이 주어진다. 이 패턴에는 *이 하나 포함되어 있고, *자리에 빈칸을 포함한 특정 문자열이 들어갈 수 있다.

이어서 N개의 판별할 문자열들이 주어진다.

 

 

🌱 나의 시도

1. 입력 받은 문자열에 대해 *을 기준으로 앞(front)과 뒤(back)를 추출한다.
2. 맨 앞의 문자열이 front와 일치하고, 맨 뒤의 문자열이 back과 일치하면 DA를 출력한다.
3. 그 외 NE를 출력한다.

 

단, 주의할 점이 있다.

이 문제에서 패턴이 반영된 문자열은`{front} _____ {end}` 형태이어야 한다.

front와 end 사이의 문자열이 없을 수 있지만, front와 end는 겹치지 않고 독립적으로 존재해야 한다.

따라서 판별하려고 하는 문자열의 길이가 front + end의 길이 이상이어야 한다.

n = int(input())
front, back = input().split('*')

for _ in range(n):
    text = input()
    if len(front)+len(back) <= len(text) and text[:len(front)] == front and text[-len(back):] == back:
        print("DA")
    else: print("NE")

 

 

 

오늘의 후기

이 문제를 파이썬의 문자열 슬라이싱이 잘 구현되어 있어서 더 빠르고 쉽게 풀 수 있었던 것 같다.

그럼에도 조건을 꼼꼼히 고려해주지 않아 한 번 틀렸다. 앞 뒤 패턴이 겹치는 케이스에 대해 생각을 못 했는데, 다른 분이 남긴 반례를 보고서야 알 수 있었다.

제공해주는 테스트 케이스가 2~3개 밖에 되지 않으니, 앞으로는 다양한 케이스를 시도해보며 조금 더 꼼꼼히 확인해야겠다.

 

728x90