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

규갓 God Gyu·2024년 7월 29일

백준

목록 보기
32/96

문제

문자열 S가 주어졌을 때, S의 서로 다른 부분 문자열의 개수를 구하는 프로그램을 작성하시오.

부분 문자열은 S에서 연속된 일부분을 말하며, 길이가 1보다 크거나 같아야 한다.

예를 들어, ababc의 부분 문자열은 a, b, a, b, c, ab, ba, ab, bc, aba, bab, abc, abab, babc, ababc가 있고, 서로 다른것의 개수는 12개이다.

입력

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

출력

첫째 줄에 S의 서로 다른 부분 문자열의 개수를 출력한다.

예제 입력 1

ababc

예제 출력 1

12

최종 코드

# 문자열 
S = input()
# 부분 문자열 담아줄 set
unique_strings_set = set()

# 0부터 반복
for i in range(len(S)):
	#i+1부터 반복
  for j in range(i+1, len(S)+1):
	  #범위 설정해서 슬라이싱
    string = S[i:j]
    #set에 담아주기
    unique_strings_set.add(string)
    
# 총 요소의 길이가 result
result = len(unique_strings_set)
print(result)

풀이과정

  1. 문자 1개만 받으니 바로 input으로 S 변수에 넣기
  2. 부분 문자열 담을 변수 unique_strings_set을 set()으로 선언
    0부터 S문자열 범위만큼 돌려주면서
    중첩 for문을 통해 i~j까지 슬라이싱한 값 string을 add 매서드를 통해 unique_strings_set에 담아주기
  3. 그 길이를 result에 담고 출력
profile
웹 개발자 되고 시포용

0개의 댓글