알고리즘 유형 : set
풀이 참고 없이 스스로 풀었나요? : O
https://www.acmicpc.net/problem/11478
import sys
input = sys.stdin.readline
S = input().strip()
subset = set()
for size in range(1, len(S)+1):
for i in range(len(S)-size+1):
j = i+size
subset.add(S[i:j])
print(len(subset))
풀이 요약
가장 바깥 for는 부분 문자열의 길이를 의미한다.
그 안의 두 번째 for는 부분 문자열을 슬라이싱할 구간의 start 인덱스를 의미한다.
j는 구간의 end 인덱스를 의미한다. (end 인덱스보다 1 큼. 슬라이싱에서 end 인덱스보다 1 작은 인덱스까지 슬라이싱해주기 때문)
슬라이싱한 문자열을 집합에 넣어준다. (중복 제거)