백준 1039 교환 Python

청천·2022년 9월 21일
0

백준

목록 보기
21/41

기억하기
이차원 visited 만들기
get((), 1) 사용

def recur(cur):
    global ans
    if cur == r:
        ans = max(ans, int("".join(num)))
        return
    for i in range(len(num)-1):
        for j in range(i+1, len(num)):
            num[i], num[j] = num[j], num[i]
            a = "".join(num)
            if visited.get((a, cur), 1):
                visited[(a, cur)] = 0
                recur(cur + 1)
            num[i], num[j] = num[j], num[i]



num, r = input().split()
num, r = list(num), int(r)
visited = {}
ans = -1
if len(num) == 1 or (len(num) == 2 and '0' in num):
    pass
else:
    recur(0)
print(ans)

0개의 댓글