프로그램/코딩테스트

삼성 Expert 1244 최대 상금

차보루타 2022. 6. 13. 19:42
ans = 0
 
 
def dfs(count):
    global ans
 
    temp = int(''.join(ar))
 
    if count == 0:
        ans = max(ans, temp)
 
        return
 
    for i in range(len(ar)):
        for j in range(i + 1, len(ar)):
            ar[i], ar[j] = ar[j], ar[i]
 
            temp_key = ''.join(ar)
 
            if chk.get((temp_key, count - 1), 1):
                chk[(temp_key, count - 1)] = 0
                dfs(count - 1)
 
            ar[i], ar[j] = ar[j], ar[i]
 
 
for test_case in range(1, int(input()) + 1):
    ans = 0
 
    ar, n = input().split()
    ar = list(ar)
    n = int(n)
 
    chk = {}
 
    dfs(n)
 
    print(f'#{test_case} {ans}')