관리 메뉴

커리까지

[백준] 16943번 숫자 재배치 파이썬 본문

알고리즘/풀이

[백준] 16943번 숫자 재배치 파이썬

목표는 커리 2023. 8. 21. 21:40
728x90
SMALL

문제

두 정수 A와 B가 있을 때, A에 포함된 숫자의 순서를 섞어서 새로운 수 C를 만들려고 한다. 즉, C는 A의 순열 중 하나가 되어야 한다.

가능한 C 중에서 B보다 작으면서, 가장 큰 값을 구해보자. C는 0으로 시작하면 안 된다.

입력

첫째 줄에 두 정수 A와 B가 주어진다.

출력

B보다 작은 C중에서 가장 큰 값을 출력한다. 그러한 C가 없는 경우에는 -1을 출력한다.

제한
  • 1 ≤ A, B < 109
예제 입력 1
1234 3456
예제 출력 1
3421

제출 답안

from itertools import permutations
import sys

input = sys.stdin.readline
a, b = map(str, input().split())
b = int(b)
answer = -1
a_list = ["".join(item) for item in permutations(a)]
for i in a_list:
    if i[0] == "0":
        continue
    i = int(i)
    if i < b:
        answer = max(answer, i)
print(answer)
728x90
LIST
Comments