728x90
반응형
https://www.acmicpc.net/problem/2661
문제해결
- 문자열을 잘라서 앞에 문자열과 겹치는 것이 있는지 확인하는 문제
- 겹치는 것이 있으면 바로 그만두고 다른 경우의 수 찾기
- for문이 많아 시간복잡도 걱정이 있었다. (사실 그래서 다른 분들의 코드를 많이 참고하였다.)
- 백트래킹의 전형적인 문제
CODE
import sys
input= sys.stdin.readline
n = int(input())
result = []
def check(result, cnt):
for i in range(cnt):
sliceTemp = result[i:]
for j in range(1,len(sliceTemp)//2+1):
if sliceTemp[:j]==sliceTemp[j:j+j]:
return False
return True
def BackTracking(cnt):
if not check(result,cnt):
return -1
if cnt ==n:
print(*result,sep='')
return 1
for i in range(1,4):
result.append(i)
if BackTracking(cnt+1) == 1:
return 1
result.pop()
BackTracking(0)
728x90
반응형
'알고리즘 > [python] 백준 BOJ' 카테고리의 다른 글
[python] 백준 2485 가로수 (0) | 2023.03.30 |
---|---|
[python] 백준 16637 괄호 추가하기 (0) | 2023.03.28 |
[python] 백준 9205 맥주 마시면서 걸어가기 (0) | 2023.03.26 |
[python] 백준 2573 빙산 (0) | 2023.03.26 |
[python] 백준 9084 동전 (0) | 2023.03.22 |
댓글