[코테] 백준 브루트포스 16943번 문제
16943번 : 숫자 재배치
문제 링크
https://www.acmicpc.net/problem/16943
문제 설명
두 정수 A와 B가 있을 때, A에 포함된 숫자의 순서를 섞어서 새로운 수 C를 만들려고 한다. 즉, C는 A의 순열 중 하나가 되어야 한다.
가능한 C 중에서 B보다 작으면서, 가장 큰 값을 구해보자. C는 0으로 시작하면 안 된다.
입력
첫째 줄에 두 정수 A와 B가 주어진다.
출력
B보다 작은 C중에서 가장 큰 값을 출력한다. 그러한 C가 없는 경우에는 -1을 출력한다.
제한
1 ≤ A, B < 10^9
문제풀이
permutations 라이브러리를 이용하여 문제를 해결할 수 있다.
from itertools import permutations
A, B = input().split()
AList = sorted(list(A))
result = -1
for i in list(permutations(AList)):
if i[0] != '0' and int(B) > int(''.join(i)):
result = max(result, int(''.join(i)))
print(result)
Comments