[Python] 알고리즘/Silver

[11478] 서로 다른 부분 문자열의 개수 (Python)

-Becca- 2021. 10. 31. 16:24

[문제]

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

 

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

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

www.acmicpc.net


알고리즘 분류는 자료구조, 문자열, 트리/해시를 사용한 집합과 맵 입니다.

서로 다른 부분 문자열을 구해야 하므로, set()을 이용하여 중복을 제거합니다.

길이 1, 2, 3, ... 을 구하기 위해서, 이중 for문을 사용합니다.

 

이해를 돕기 위한 영상

[코드]

import sys

S = list(sys.stdin.readline().rstrip())
res = set()

for j in range(1, len(S) + 1):
    for i in range(len(S)):
        res.add("".join(S[i : i + j]))

print(len(res))