출처 : https://www.acmicpc.net/problem/2992
2992번: 크면서 작은 수
정수 X가 주어졌을 때, X와 구성이 같으면서 X보다 큰 수 중 가장 작은 수를 출력한다. 수의 구성이 같다는 말은, 수를 이루고 있는 각 자리수가 같다는 뜻이다. 예를 들어, 123과 321은 수의 구성이
www.acmicpc.net

1) 요구사항 분석 : 문제 읽기
주어진 조건에 맞는 수를 출력
2) 설계 : 접근 방식
백트래킹을 이용해서 풀어줌
입력을 배열로 바꿔주고, 그리고 정렬해서 작은 수부터 확인해줌
그리고 큰 수를 찾는 순간 바로 출력 후 함수 종료
# BOJ2992 크면서 작은 수
x = int(input())
arr = list(str(x))
arr.sort()
ans = [0 for _ in range(len(arr))]
visited = [False for _ in range(len(arr))]
def recur(cur):
if cur == len(arr):
tem = "".join(ans)
if int(tem) > x: # 제일 처음 큰 수 찾고 종료
print(int(tem))
exit()
for i in range(len(arr)):
if visited[i]:
continue
visited[i] = True
if cur == 0:
if arr[i] != 0:
ans[cur] = str(arr[i])
recur(cur + 1)
visited[i] = False
else:
ans[cur] = str(arr[i])
recur(cur + 1)
visited[i] = False
recur(0)
print(0) # 위에서 함수가 종료가 안되었다면, 그러한 숫자가 없는 경우임'알고리즘 > BOJ' 카테고리의 다른 글
| [BOJ / 백준] 15654번 N과 M (5) python / 파이썬 조합 (0) | 2022.07.28 |
|---|---|
| [BOJ / 백준] 2864번 5와 6의 차이 python / 파이썬 문자열 치환 (0) | 2022.07.27 |
| [BOJ / 백준] 7785번 회사에 있는 사람 python / 파이썬 집합, 차집합 내림차순 정렬 (0) | 2022.07.21 |
| [BOJ / 백준] 3047번 ABC python / 파이썬 list 오름차순 정렬 (0) | 2022.07.19 |
| [BOJ / 백준] 5800번 성적 통계 python / 파이썬 list 내림차순 정렬 슬라이싱 (0) | 2022.07.17 |
댓글