최대 1 분 소요

1. 문제 분석

  1. 집합에는 중복값을 넣을 수 없다

    부분 문자열의 값을 집합에 넣어준다.

  2. 슬라이싱을 이용하여 부분 문자열을 만든다

    ababc, abab, aba, ab, a
    babc, bab, ba, b
    abc, ab, a
    bc, b
    c

    [0:5] [0:4] [0:3] [0:2] [0:1]
    [1:5] [1:4] [1:3] [1:2]
    [2:5] [2:4] [2:3]
    [3:5] [3:4]
    [4:5]

2. 코드

import sys

result = set() # 부분 문자열이 들어갈 집합

S = sys.stdin.readline().strip() # 문자열을 입력받는다

for i in range(len(S)): # 부분 문자열을 구한다
    for j in range(len(S), 0, -1):
        if i >= j:
            break
        result.add(S[i:j])

print(len(result))



result = set() # 부분 문자열이 들어갈 집합

서로 다른 부분 문자열은 중복값이 없기 때문에 집합에 값을 넣어준다

for i in range(len(S)): # 부분 문자열을 구한다
    for j in range(len(S), 0, -1):
        if i >= j:
            break
        result.add(S[i:j])

슬라이싱을 이용해 부분 문자열을 집합에 넣는다

3. 총평

문제의 키워드는 매우 쉽게 구할 수 있었지만
부분 문자열을 어떻게 구하느냐에서 시간을 제일 많이 쓴 것 같다.

이중 for문을 이용해 배열을 탐색하는 부분이 약하다는 것을 알게되었고
이 부분을 보완할 수 있도록 많은 문제들을 풀어봐야겠다고 생각했다.

댓글남기기