코드

import sys
sys.stdin = open("input.txt")

def solve(cur):
    if cur == n:
        print("".join(result))
        exit()
        return

    for i in range(1, 4):
        if cur == 0:
            result.append(str(i))
            solve(cur + 1)
            result.pop()
        else:
            result.append(str(i))
            for j in range(2, cur + 2, 2):  # 2칸씩 늘리면서 진행
                temp = result[cur - j + 1:] 
                k = j // 2
                if temp[0:k] == temp[k:]:
                    result.pop()
                    break
            else:
                solve(cur + 1)
                result.pop()


n = int(input())
result = []
solve(0)

:star:풀이

백트래킹의 늪에 빠져버렸다.. 오늘 푼 문제는 슬라이싱 처리만 좀 헷갈리고 무난했던 것 같다.

가장 최근의 수를 포함해서 배열 길이를 2, 4, … 짝수개로 늘려가며 반을 잘라 좌, 우를 확인했다.

맞힌 사람들의 풀이를 봤는데 따로 특이한 풀이는 보이지 않았다!

화이팅팅!!

댓글남기기