[백준>구현>11478] 서로 다른 부분 문자열의 개수

Woonil·2022년 7월 11일
0

알고리즘

목록 보기
10/25

문제설명

문자열 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의 서로 다른 부분 문자열의 개수를 출력한다.

접근

연속된 일부분
문자열의 특정 구간으로 생각할 수 있음 > 파이썬의 인덱스 슬라이싱 기법으로 부분 문자열 표현 가능
서로 다른 것의 개수
파이썬의 set() 사용하여 중복된 값을 제외한 하나의 값을 저장

풀이

string = input()
set = set() # 부분 문자열을 담을 세트 자료형 선언
for slice_len in range(1, len(string)+1): # 이중 for 중 첫번째 for - 부분문자열의 길이 기준
  for j in range(0, len(string)): # 두번째 for - 부분문자열의 시작 인덱스 기준
    set.add(string[j:j+slice_len]) # 세트 자료형에 해당 문자열 추가 (세트에 없으면)

print(len(set))

배운점

중복값을 제외하고 값을 저장할때 집합자료형 set() 를 쓸 수 있음
set.add() 로 집합에 새로운 원소 추가함

profile
우니리개발일지

0개의 댓글