파이썬 백준 11478번 문제 풀이
1. 문제 분석
- 집합에는 중복값을 넣을 수 없다
부분 문자열의 값을 집합에 넣어준다.
- 슬라이싱을 이용하여 부분 문자열을 만든다
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문을 이용해 배열을 탐색하는 부분이 약하다는 것을 알게되었고
이 부분을 보완할 수 있도록 많은 문제들을 풀어봐야겠다고 생각했다.
댓글남기기