[伯俊/141]接頭辞
1.質問する
接頭辞X集合は、集合内のある語であり、別の語の接頭辞の集合ではない.たとえば,{hello},{hello,goodbye,game,hi},空の集合はいずれも接頭辞X集合である.しかし,{hello,hell},{giant,gig,g}は接頭辞X集合ではない.
N個の単語からなる集合を与える場合、接頭辞Xの部分集合の最大サイズを出力します.
2.入力
1行目は単語の個数Nを与える.Nは50以下の自然数である.2行目からN行に単語があります.単語は小文字のみで構成され、最大長は50です.集合中に同じ語を2回以上持つことができる.
3.コード
import sys
sys.stdin = open('input.txt')
n = int(input())
lst = [input() for _ in range(n)]
lst.sort() # 정렬하면 시간이 더 줄겠죠?
excep = lst[:] # 접두사인 단어는 삭제할 예정
for idx, test in enumerate(lst):
for temp in lst[idx:]: # test접두사인가? / 비교대상 temp
# test랑 temp가 동일한 애일때 검사 안함(test != temp)
# 근데 본인아닌데 동일한 애도 검사를 피해가기때문에 밑에서 set해준다.)
# 비교대상 temp를 test접두사길이까지 잘라서 비교해보고 같으면 제거
if test != temp and test == temp[:len(test)]:
excep.remove(test)
break
# 동일한 단어는 제거
print(len(set(excep)))
Reference
この問題について([伯俊/141]接頭辞), 我々は、より多くの情報をここで見つけました https://velog.io/@ase0574/백준1141-접두사テキストは自由に共有またはコピーできます。ただし、このドキュメントのURLは参考URLとして残しておいてください。
Collection and Share based on the CC Protocol