링크 : https://www.acmicpc.net/problem/9996
9996번: 한국이 그리울 땐 서버에 접속하지
총 N개의 줄에 걸쳐서, 입력으로 주어진 i번째 파일 이름이 패턴과 일치하면 "DA", 일치하지 않으면 "NE"를 출력한다. 참고로, "DA"는 크로아티어어로 "YES"를, "NE"는 "NO"를 의미한다.
www.acmicpc.net
- 문제
- 소요시간: 30분 20초



- 설계하기(접근방법)
1. 입력받기
입력받을 숫자와 입력받을 첫 패턴을 입력받는다
2. 구현하기
패턴의 앞부분을 front로 저장하고
패턴의 끝부분을 end로 저장한다
그 후 입력받는 문자가
front로 시작하는지
end로 끝나는지 검사한다
입력받는 문자가 패턴보다 짧은 경우를 예외 처리해준다
3. 출력하기
DA혹은 NE를 출력한다
- 코드(출력)
n = int(input())
pt = input()
pt_front = pt[0:pt.index('*')]
pt_end = pt[pt.index('*') + 1:]
pt_end_reverse = pt_end[::-1]
for _ in range(n):
word = input()
if len(pt_end) + len(pt_front) > len(word):
print("NE")
else:
check = 0
for i in range(len(pt_front)):
if pt_front[i] != word[i]:
check = 1
break
for i in range(len(pt_end)): # dc
if pt_end_reverse[i] != word[len(word)-1-i]:
check = 1
break
if check == 0 :
print("DA")
else:
print("NE")
이것이 내 코드지만 훨씬 좋은 코드가 있다
n = int(input())
pattern = input().split("*")
l = len(pattern[0]) + len(pattern[1])
for _ in range(n):
arr = input()
if len(arr) >= l and arr.startswith(pattern[0]) and arr.endswith(pattern[1]):
print("DA")
else:
print("NE")
- 얻어갈 부분
1.먼저 앞뒤 패턴을 split("*")로 받으면 한번에 분할할 수 있다
2. startswith,endswith를 함수를 사용하면 매우 쉽게 검사할 수 있다
'알고리즘(백준)' 카테고리의 다른 글
| [알고리즘/분할정복] 1629번 : - python (0) | 2024.02.08 |
|---|---|
| [알고리즘/문자열] 22233번 가희와 키워드: - python (0) | 2024.01.26 |
| [알고리즘/문자열] 20310번 : 타노스 - python (0) | 2024.01.24 |
| [알고리즘/문자열] 1213번 : 팰린드롬 - python (1) | 2024.01.23 |
| [알고리즘/문자열] 2607번 : 비슷한 단어 - python (0) | 2024.01.22 |