Baekjoon

[백준] 11478 서로 다른 부분 문자열의 개수 (실버3) / list, set, dict 시간복잡도 비교

hellosonic 2023. 6. 13. 12:50

문제요약

나의 코드 및 설명 01 - list(시간초과)

  • 리스트로 풀려고 했다가 시간초과가 발생했다.
s = list(input())

length = len(s)

v = []

for l in range(1,length+1):
    for i in range(length-l+1):
        check = "".join(map(str, s[i:i+l]))
        if check not in v:
            v.append(check)

print(len(v))

나의 코드 및 설명 02 - set

  • set을 써서 문제를 해결할 수 있었다. set의 추가 연산은 <add>이다.
s = input()
result = set()

for l in range(len(s)):
    for i in range(len(s)-l+1):
        temp = s[i:i+l]
        result.add(temp)

print(len(result))

list 주요 연산 시간복잡도

set 주요 연산 시간복잡도

dict 주요 연산 시간복잡도

피드백

set을 사용하여 문제를 해결할 수 있었다. list, set, dict 의 주요 연산 시간복잡도 표는 벌써 세 번째 포스팅하는데, 꼭 암기할 필요가 있다. set에서 len(S)의 연산은 시간 복잡도가 O(1)이다.