https://www.acmicpc.net/problem/16943
16943번: 숫자 재배치
두 정수 A와 B가 있을 때, A에 포함된 숫자의 순서를 섞어서 새로운 수 C를 만들려고 한다. 즉, C는 A의 순열 중 하나가 되어야 한다. 가능한 C 중에서 B보다 작으면서, 가장 큰 값을 구해보자. C는 0
www.acmicpc.net
Problem
- 두 정수 A와 B가 있을 때, A에 포함된 숫자의 순서를 섞어서 새로운 수 C를 만들려고 한다. 즉, C는 A의 순열 중 하나가 되어야 한다. 가능한 C 중에서 B보다 작으면서, 가장 큰 값을 구해보자. C는 0으로 시작하면 안 된다.
조건
- B보다 작은 C중에서 가장 큰 값을 출력한다. 그러한 C가 없는 경우에는 -1을 출력한다.
SOL
문제에 답이 있다. C는 "A의 순열 중 하나"라는 엄청난 힌트를 준 친절한 문제이다.
(사실 주지 않았어도, 순열로 접근하거나, 순열을 재귀적으로 풀이하는 방법으로 풀었을거 같다)
#숫자 재배치
import sys
from itertools import permutations
input= sys.stdin.readline
A,B = map(str,input().split())
ans=-1
for permu in list(permutations(A)):
if permu[0]=="0":
continue
new_A=int(''.join(permu))
if new_A<=int(B):
ans=max(ans,new_A)
print(ans)
'알고리즘 문제(SOL)' 카테고리의 다른 글
[백준/17244/파이썬] 아 맞다 ! 우산 (0) | 2022.02.17 |
---|---|
[백준/15686/파이썬] 치킨 배달 (0) | 2022.02.16 |
[백준/14890/파이썬] 경사로 (0) | 2022.02.16 |
[백준/14889/파이썬] 스타트와 링크 (0) | 2022.02.15 |
[백준/16938/파이썬] 캠프 준비 (0) | 2022.02.15 |