| 시간 제한 | 메모리 제한 | 제출 | 정답 | 맞힌 사람 | 정답 비율 |
|---|---|---|---|---|---|
| 1 초 | 128 MB | 2277 | 1195 | 999 | 54.560% |
정수 X가 주어졌을 때, X와 구성이 같으면서 X보다 큰 수 중 가장 작은 수를 출력한다.
수의 구성이 같다는 말은, 수를 이루고 있는 각 자리수가 같다는 뜻이다. 예를 들어, 123과 321은 수의 구성이 같다. 하지만, 123과 432는 구성이 같지 않다.
첫째 줄에 X가 주어진다. (1 ≤ X ≤ 999999) X는 0으로 시작하지 않는다.
첫째 줄에 결과를 출력한다. 만약 그러한 숫자가 없는 경우에는 0을 출력한다.
156
165
330
0
27711
71127
주어진 수에 대해 가능한 순열을 다 구한다.
x보다 작은 것들은 삭제한다.
남은 것들 중 제일 작은 숫자 출력
백트래킹,,,, 으로 못함,,,^^
input = list(input())
output = []
def dfs(array, n):
result = []
if n==0:
return [[]]
for i in range(len(array)):
new = array[:i]+array[i+1:]
rest_list = dfs(new, n-1)
for rest in rest_list:
result.append([array[i]]+rest)
return result
new_array = dfs(input, len(input))
for i in new_array:
if int("".join(i))>int("".join(input)):
output.append(int("".join(i)))
if len(output)==0:
print(0)
else:
print(min(output))