오늘의 학습 키워드
문자열
오늘의 회고
🌱 오늘의 문제
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
'Daily > Coding Test' 카테고리의 다른 글
[백준][정렬] 시리얼 번호 (0) | 2025.04.22 |
---|---|
[백준][DFS/BFS] DFS와 BFS (+ 재귀 함수가 아닌 반복문을 이용한 DFS, 우선순위 큐를 이용한 인접 리스트) (0) | 2025.04.16 |
[백준][스택] 쇠막대기 (1) | 2025.04.11 |
[백준][DFS] 섬의 개수 (0) | 2025.04.10 |
[백준][투포인터] 수열 (0) | 2025.04.04 |