class Solution:
def constructDistancedSequence(self, n: int) -> List[int]:
dp = [0 for _ in range(2*n - 1)]
visit = [0 for _ in range(n + 1)]
def backtrack(depth, dp, visit):
if visit[0]:
return
if sum(visit) == n and visit[0] == 0:
visit[0] = 1
return
if dp[depth] != 0:
while dp[depth] != 0:
depth += 1
backtrack(depth, dp, visit)
if visit[0]:
return
for i in range(n, 1, -1):
if visit[i] == 0 and depth + i < 2*n - 1 and dp[depth + i] == 0:
dp[depth] = i
dp[depth + i] = i
visit[i] = 1
backtrack(depth + 1, dp, visit)
if visit[0]:
return
dp[depth] = 0
dp[depth + i] = 0
visit[i] = 0
if visit[1] == 0:
dp[depth] = 1
visit[1] = 1
backtrack(depth + 1, dp, visit)
if visit[0]:
return
dp[depth] = 0
visit[1] = 0
return
backtrack(0, dp, visit)
return dp
백트래킹이 정해는 맞는거 같긴 함.
댓글 영역
획득법
① NFT 발행
작성한 게시물을 NFT로 발행하면 일주일 동안 사용할 수 있습니다. (최초 1회)
② NFT 구매
다른 이용자의 NFT를 구매하면 한 달 동안 사용할 수 있습니다. (구매 시마다 갱신)
사용법
디시콘에서지갑연결시 바로 사용 가능합니다.