고통은 사라지고 결과는 남는다. Records of Chansolve

백준 Python 서로 다른 부분 문자열의 개수 11478번 본문

Algorithms

백준 Python 서로 다른 부분 문자열의 개수 11478번

엄청큰노란닭 2023. 2. 20. 16:01
 

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

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

www.acmicpc.net

예제입력

ababc

 

예제출력

12

 

 

예제가 잘못 되었는지 출력하면 18로 나온다. 하지만 정답으로 찍힌다..

첫 번째 오답 코드이다.

s = input()
ans = []

for i in range(len(s)):
    for j in range(i, len(s)):
        temp = s[i:j + 1]
        ans.append(set(temp))

print(len(ans))

중복되는 것을 빼주어야 되니까 리스트말고 집합으로 접근해야겠다.

 

 

최종 정답 코드이다.

s = input()
ans = set()

for i in range(len(s)):
    for j in range(i, len(s)):
        temp = s[i:j + 1]
        ans.add(temp)

print(len(ans))

 

접근방법

  • 문자열 S를 입력받는다. 부분 문자열을 저장할 집합 ans을 선언한다.
  • 이중 for문을 돌면서 부분 문자열 temp를 구하고 temp를 ans에 추가한다.
    • ans가 집합이기 때문에 중복된 문자열을 추가되지 않는다.
  • 집합 ans의 길이를 출력한다.
Comments