본문 바로가기

알고리즘/백준

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

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

 

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

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

www.acmicpc.net

# 백준 11478 서로 다른 부분 문자열의 개수

s = input()
subword = []

k=1
for i in range(len(s)): # 1
  for j in range(len(s)+1-k): # 2
    subword.append(s[j:j+k])
  k += 1

subword=set(subword)

print(len(subword))

문자열 슬라이싱을 이용했습니다.

 

k는 subword의 크기입니다. 

 

# 1 : subword는 크기가 1부터 len(s)까지 가능하니까 len(s)만큼 반복해줍니다.

# 2 : k에 해당하는 크기만큼의 subword를 만들어서 리스트에 추가해줍니다. 그 후 k를 1씩 키워줍니다.

 

마지막으로 중복치 제거를 위해 set(subword)를 하고 그 길이를 출력 해줍니다.