본문 바로가기
알고리즘/완전탐색

[백준][Python] 9996번 한국이 그리울 땐 서버에 접속하지

by 임짠짠 2022. 7. 28.
반응형
 

9996번: 한국이 그리울 땐 서버에 접속하지

총 N개의 줄에 걸쳐서, 입력으로 주어진 i번째 파일 이름이 패턴과 일치하면 "DA", 일치하지 않으면 "NE"를 출력한다. 참고로, "DA"는 크로아티어어로 "YES"를, "NE"는 "NO"를 의미한다.

www.acmicpc.net

 

 

 

코드

n = int(input())
pattern = input().split("*")
length = len(pattern[0]) + len(pattern[1])

for _ in range(n):
	file = input()
	if length > len(file):
		print("NE")
		
	else:
		if pattern[0] == file[:len(pattern[0])] and pattern[1] == file[-len(pattern[1]):]:
			print("DA")
		else:
			print("NE")

 

설명

처음에 패턴이 a*b와 같이 알파벳 하나씩만 나오는 줄 알았는데 abc*def 와 같이 여러개가  나오는 경우도 있다는 걸 깨달았다.. 

만약 a*a가 패턴이고 a가 주어지면 a가 하나밖에 없기 때문에 중복이 될 수 없으므로 NE가 떠야 한다.

따라서 패턴의 총 길이가 파일 이름보다 클 경우 패턴이 일치할 수 없다. 

 

파일 이름이 패턴의 길이보다 길 경우, 슬라이싱을 이용해 앞부분과 뒷부분이 패턴과 일치하는지 확인했다.

file[-a : ]를 해주면 뒤에 a번째 문자부터 끝까지 가져온다.  

반응형

댓글