백트래킹으로 풀기
나쁜 수열이라면 -1 반환하면서 빠져나오기
현재 확인중인 입력값의 절반만 반복하면 전체 수열 확인 가능
ex) 12131213
range = 1,2,3,4
i | ||
---|---|---|
1 | [3] | [1] |
2 | [1,3] | [1,2] |
3 | [2,1,3] | [1,3,1] |
4 | [1,2,1,3] | [1,2,1,3] |
for i in range(1,(depth//2)+1):
if s[-i:] == s[-2*i:-i]:
return -1
import sys
n = int(sys.stdin.readline())
s = []
def back(depth):
# 나쁜 수열이라면 -1 반환하면서 빠져나오기
for i in range(1,(depth//2)+1):
if s[-i:] == s[-2*i:-i]:
return -1
# n자리 수
if depth == n:
for i in range(n):
print(s[i],end = '')
return 0
for i in range(1,4):
s.append(i)
if back(depth+1) == 0:
return 0
s.pop()
back(0)