[백준 11478 파이썬] 서로 다른 부분 문자열의 개수 (실버 3, 집합)

배코딩·2022년 6월 6일
0

PS(백준)

목록 보기
88/118

알고리즘 유형 : 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))



풀이 요약

  1. 이중 for문으로 가능한 모든 부분 문자열을 set에 넣어주고, set의 길이를 출력해준다.

  1. 가장 바깥 for는 부분 문자열의 길이를 의미한다.

    그 안의 두 번째 for는 부분 문자열을 슬라이싱할 구간의 start 인덱스를 의미한다.

    j는 구간의 end 인덱스를 의미한다. (end 인덱스보다 1 큼. 슬라이싱에서 end 인덱스보다 1 작은 인덱스까지 슬라이싱해주기 때문)

    슬라이싱한 문자열을 집합에 넣어준다. (중복 제거)

profile
PS, 풀스택, 앱 개발, 각종 프로젝트 내용 정리 (https://github.com/minsu-cnu)

0개의 댓글