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에 추가한다.
집합의 특성으로 중복은 제외되기 때문에 간단하게 부분문자열 수를 구할 수 있다.
'Algorithm > Problems' 카테고리의 다른 글
[백준/파이썬] 15649번 N과 M (1) (0) | 2023.02.01 |
---|---|
[백준/파이썬] 1012번 유기농 배추 (0) | 2022.12.06 |
[백준/파이썬] 10816번 숫자 카드2 (0) | 2022.11.18 |
[백준/파이썬] 1620번 나는야 포켓몬 마스터 이다솜 (0) | 2022.11.18 |
[백준/파이썬] 14425번 문자열 집합 (0) | 2022.11.18 |