https://www.acmicpc.net/problem/11478
s=input()
s_set=set()
#모든 조합을 set에 넣어 중복제거 (i=1~문자열 길이)
for i in range(len(s)):
for j in range(i,len(s)):
s_set.add(s[i:j+1])
print(len(s_set))
처음에 조합문제를 보고 collections를 써봐야하나 했지만, 중복된 문자열의 조합까지 생성해버리기 때문에
다른 방법을 생각해보다가 set을 사용하였다
💡 해결과정
모든조합을 이중 for문을 사용해 set 자료구조에 넣어준다
for i in range(len(s)):
for j in range(i,len(s)):
s_set.add(s[i:j+1])
모든조합을 위해 처음엔, i를 1부터 len까지 i개로 이루어진 조합으로 만들어나갈까 했지만 복잡해지므로...
두개의 포인터를 이용해 j는 i+1로 시작하며, 포인터를 이동해가면서 조합을 만들어나가는 방식으로 풀었당
❗️인덱스 슬라이싱으로는 범위를 벗어나도 오류가 발생하지 않는다.
collections를 사용한 풀이
https://janghan-kor.tistory.com/182
'백준' 카테고리의 다른 글
[백준-Python] 누울 자리를 찾아라 : 1652번 (0) | 2024.06.03 |
---|---|
[백준-python] 알고리즘의 수행 시간 2,4,6번 (0) | 2024.05.31 |
[백준-Python] 단어 공부 : 1157번 (0) | 2024.05.30 |
[백준-Python] 올림픽 : 8979번 (0) | 2024.05.29 |
[백준-Python] 주사위 세개 : 2480번 (0) | 2024.05.29 |