- 문제 : https://www.acmicpc.net/problem/9996
문제 이해
- 중간에 ' * '가 하나 있는 문자열이 주이고, 시작 ~ '*'전, '*'후 ~ 끝의 문자가 같은 문자는 DA, 다른 문자는 NE를 출력하는 문제다.
- 일단 스타(*)를 기준으로 first, second를 나눈다. 그 후 입력되는 글자의 앞부분은 first와 비교, 뒷부분은 second와 비교해서 두 개 모두 같다면 DA를 출력하고, 아니라면 NE를 출력하면 된다.
- 어렵지 않은 문제였지만, 25%에서 계속 틀리길래 무엇때문인지 몰라서 찾아봤다. 그런데 a*a인 키워드가 주어졌을 때 a인 경우는 틀린 경우지만, 따로 거르지 않으면 맞는 경우로 출력될 수 있어서 이 부분에 유의해서 진행했어야 했다.
그래서 주어진 키워드의 문자부분보다 짧은 문자열은 실패 처리하는 로직을 추가하면 된다.
# 키워드는 a*a인데 단어는 a인 경우를 거르기 위해서
if first_length + second_length > length:
print('NE')
continue
정답 풀이
n = int(input())
arr = input().rstrip().split('*')
first_length = len(arr[0])
second_length = len(arr[1])
for _ in range(n):
word = input().rstrip()
length = len(list(word))
# 키워드는 a*a인데 단어는 a인 경우를 거르기 위해서
if first_length + second_length > length:
print('NE')
continue
if arr[0] == word[:first_length] and arr[1] == word[length - second_length : ]:
print('DA')
else:
print('NE')
'백준 > String' 카테고리의 다른 글
[문자열/백준] 20437번 : 문자열 게임2 (0) | 2023.06.16 |
---|---|
[문자열/백준] 4659번 : 비밀번호 발음하기 (0) | 2023.06.15 |
[문자열/백준] 22233번 : 가희와 키워드 (0) | 2023.06.14 |
[문자열/백준] 1213번 : 팰린드롬 만들기 (0) | 2023.06.14 |
[문자열/백준] 2607번 : 비슷한 단어 (0) | 2023.06.12 |