sm 기술 블로그
96. 11478(서로 다른 문자열의 개수) 본문
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