Baekjoon

[BOJ / 백준] 16943번 숫자 재배치 파이썬(Python) 문제 풀이

728x90

 

문제

 

문제 링크 : https://www.acmicpc.net/problem/16943

 

16943번: 숫자 재배치

두 정수 A와 B가 있을 때, A에 포함된 숫자의 순서를 섞어서 새로운 수 C를 만들려고 한다. 즉, C는 A의 순열 중 하나가 되어야 한다.  가능한 C 중에서 B보다 작으면서, 가장 큰 값을 구해보자. C는 0

www.acmicpc.net

 

 

 

 

 

CODE

from itertools import permutations

a, b = input().split()
b = int(b)
c = -1

a_list = []
for item in permutations(a):
    a_list.append(''.join(item))

for i in a_list:
    if i[0] == '0':  # 0으로 시작하는 경우
        continue
    i = int(i)
    if i < b:
        c = max(c, i)

print(c)

 

 

 

 

 

풀이

permutations를 사용하여 a의 가능한 순열을 다 구한 후,

0으로 시작하는지, b보다 작은지 검사한 후 c과 비교하여 넣는다

 

 

 

 

 

 

결과

 

 

 

 

 

 

 

728x90