백준 16943 숫자 재배치

gmlwlswldbs·2021년 12월 22일
0

코딩테스트

목록 보기
94/130
a, b = map(int, input().split())
ans = -1
a = str(a)
def go(l):
    global ans
    if len(l) == len(a):
        if int(l) < b:
            ans = max(ans, int(l))
        return
    for i in a:
        if i not in l:
            go(l + i)

for i in a:
    if i != '0':
        go(i)

print(ans)

다른 인덱스를 가진 같은 숫자가 있을 수 있음 -> 인덱스로 접근해줌

a, b = map(int, input().split())
ans = -1
a = str(a)
def go(l, used):
    global ans
    if len(l) == len(a):
        if int(l) < b:
            ans = max(ans, int(l))
        return
    for i in range(len(a)):
        if i not in used:
            go(l + a[i], used+[i])

# 처음에 0이 들어갈 수 없음
for i in range(len(a)):
    if a[i] != '0':
        go(a[i], [i])


print(ans)

0개의 댓글