🧩 Programming Languages/Python CodingTest

백준 11478번(silver 4) : 서로 다른 부분 문자열의 개수 (인덱싱, set 선언)

복숭아아이스티에샷추가 2024. 1. 23. 01:00

 

 

11478번: 서로 다른 부분 문자열의 개수

첫째 줄에 문자열 S가 주어진다. S는 알파벳 소문자로만 이루어져 있고, 길이는 1,000 이하이다.

www.acmicpc.net

 


 

 내가 작성한 코드 - 풀이 참고하여 풀었다ㅠ 

import sys
input = sys.stdin.readline

s = input().rstrip()

result = []

for i in range(len(s)):
    for j in range(i+1, len(s)+1):
        result.append(s[i:j])

print(len(set(result)))

 

 

 

 주의해야할점 (1) 인덱싱은 -1 

 

for 문의 range 처럼 인덱싱은 끝숫자-1 까지 인덱싱 되기 때문에 이 점도 참고하여 중첩 for문에 range를 +1 을 해야한다.

 

 

 주의해야할점 (2) 빈문자열 포함되기에 i+1 로 시작해야함 

 

vscode에서 출력해보니 result 리스트 안에 빈 문자열도 포함되어있는 것을 확인하였다.

그래서 중첩 for문의 시작지점을 i+1 로 작성하였다.

 


 

 

 새롭게 알게 된 것 : 집합 set 

 

아예 처음부터 set 변수를 선언하여 이 set 안에 요소들을 추가하며 구현할 수 있다는 것을 알게되었다.

#리스트 선언 대신 set 변수 선언
result = set()

#for문 마지막 줄에는
result.add(s[i:j])