Algorithm/Problems

[백준/파이썬] 11478번 서로 다른 부분 문자열의 개수

공부좀하시졍 2022. 12. 6. 15:23

https://www.acmicpc.net/problem/11478

 

11478번: 서로 다른 부분 문자열의 개수

첫째 줄에 문자열 S가 주어진다. S는 알파벳 소문자로만 이루어져 있고, 길이는 1,000 이하이다.

www.acmicpc.net

import sys

read = sys.stdin.readline

str = read().rstrip()
subs = set()

for i in range(len(str)):
  for j in range(i, len(str)):
    tmp = str[i:j+1]
    subs.add(tmp)
print(len(subs))

부분문자열로 한자리 문자부터 입력받은 문자열 길이까지의 문자로 이루어진 경우 (중복제외)를 구해야 한다.

이중 for문을 이용해 집합(set)으로 선언한 subs에 추가한다.

집합의 특성으로 중복은 제외되기 때문에 간단하게 부분문자열 수를 구할 수 있다.