[백준] 1141: 접두사

문자열 + 정렬

접두사

문제 풀이 전략
1) 문자열 길이 순서대로 정렬

lst.sort(key=lambda x: len(x))

정렬 후 -> h, hi, run, hello, rerun , running

6
hello
hi
h
run
rerun
running

2) 앞에서 부터 비교하면서 내가 다른 단어의 접두사이면 나를 탈락

if lst[j].startswith(lst[i]):
  1. h -> hi의 접두사 (탈)
    2. hi -> ok (합)
    3.run -> running 의 접두사(탈)
    4.hello -> ok(합)
    5.rerun -> ok(합)
    6.running -> ok(합)
import sys
input = sys.stdin.readline
n = int(input())
lst = []
for i in range(n):
	lst.append(sys.stdin.readline().rstrip())
# 길이별로 정렬
lst.sort(key=lambda x: len(x))
flag = 0
cnt = 0
for i in range(len(lst)):
	for j in range(i+1, len(lst)):
		if lst[j].startswith(lst[i]):
			flag = 1
			break
	if flag == 1:
		flag = 0
		continue
	cnt +=1
print(cnt)

좋은 웹페이지 즐겨찾기