sm 기술 블로그

96. 11478(서로 다른 문자열의 개수) 본문

문제/백준_파이썬

96. 11478(서로 다른 문자열의 개수)

sm_hope 2022. 6. 21. 12:48
import sys
input = sys.stdin.readline

S = input().strip()
S_repository = set()

for i in range(len(S)):
    for j in range(i, len(S)):
        tmp = S[i:j+1]
        S_repository.add(tmp)

print(len(S_repository))

문제요약

문자열이 들어오면 각 부분을 쪼개서 개수를 세시오. 단, 중복은 제외.

해설

문자열을 한글자부터 차근차근 자르기를 이용하면 된다.

 

파이썬에서는 문자열 슬라이싱을 이용하면된다.

for i in range(len(S)):
    for j in range(i, len(S)):
        tmp = S[i:j+1]
        S_repository.add(tmp)

예를들어 Hello가 입력된다면 출력은

H
He
Hel
Hell
Hello
e
el
ell
ello
l
ll
llo
l
lo
o

와 같이 출력될 것이다.

집합의 특징은 중복을 제거하고, 순서에대한 보장이 없다.

따라서 중복으로 값이 들어온다고 해도, 중복을 제거하기 때문에 문제되지 않는다.

'문제 > 백준_파이썬' 카테고리의 다른 글

98. 3009(네 번째 점)  (0) 2022.06.21
97. 1085(직사각형에서 탈출)  (0) 2022.06.21
95. 1269(대칭 차집합)  (0) 2022.06.21
94. 1764(듣보잡)  (0) 2022.06.20
93. 10816(숫자 카드2)  (0) 2022.06.19
Comments