-
[Python] 1038번: 감소하는 수알고리즘/백준 2023. 3. 18. 20:26
https://www.acmicpc.net/problem/1038
1038번: 감소하는 수
음이 아닌 정수 X의 자릿수가 가장 큰 자릿수부터 작은 자릿수까지 감소한다면, 그 수를 감소하는 수라고 한다. 예를 들어, 321과 950은 감소하는 수지만, 322와 958은 아니다. N번째 감소하는 수를
www.acmicpc.net
문제 설명
- 입력으로 N을 받으면 어떤 숫자가 N번째 감소하는 숫자인지 출력하면 되는 것
처음에는 무슨 말인지 몰라서 해맸는데 예제로 설명하자면
입력으로 18을 받았을 때 18번째 감소하는 숫자는 42이다
순서 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 숫자 0 1 2 3 4 5 6 7 8 9 10 20 21 30 31 32 40 41 42 이렇게 오름차순으로 정렬된 숫자 중에 N번째 감소하는 숫자를 출력하면 됩니다.
문제 풀이
- 조합을 사용하여 풀이
- itertools 라이브러리를 사용하여 손쉽게 조합을 사용 -> combinations(리스트, 만들어야하는 원소의 수)
코드
from itertools import combinations N = int(input()) nums = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9] downList = [] for i in range(1, 11): combi = list(combinations(nums, i)) for cb in combi: cb = list(cb) cb.sort(reverse=True) downList.append(int("".join(map(str, cb)))) downList.sort() if N >= len(downList): print(-1) else: print(downList[N])