티스토리 뷰

a = input()
b = len(a)

def f(x):
    c=set()
    for y in range(b-x):
        c.add(a[y:x+y+1])
    return len(c)

d = 0
for x in range(b):
    d+=f(x)
print(d)

 

풀이 : set (집합)

 

python 의 set은 중복이 아닌 값들로만 이루어져 있습니다.

즉 처음 입력받은 문자열을 쪼개서 set에 집어넣으면 자연스레 중복이 아닌 값들만 남게 되고, 이 set의 길이가 중복이 아닌 문자열들의 개수임을 알 수 있습니다.

 

여기서는 함수를 사용하여

특정 길이끼리만을 비교하도록 했습니다. (길이가 1인것들, 길이가 2인것들,... 끼리만 서로 비교)

이렇게 해야 속도가 더욱 빨라집니다.

 

https://www.acmicpc.net/status?problem_id=11478&&from_problem=1&language_id=1003

 

최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
«   2025/04   »
1 2 3 4 5
6 7 8 9 10 11 12
13 14 15 16 17 18 19
20 21 22 23 24 25 26
27 28 29 30
글 보관함