*문제 출처는 백준에 있습니다.
문제 제목: 감소하는 수 / 1038번 (골드 5단계)
문제 사이트: https://www.acmicpc.net/problem/1038
문제 설명
나의 풀이
from itertools import combinations
def get_decreasing_number(N):
decreasing_numbers = []
for length in range(1, 11):
for comb in combinations(range(10), length):
num_str = ''.join(map(str, sorted(comb, reverse=True)))
decreasing_numbers.append(int(num_str))
decreasing_numbers.sort()
if N < len(decreasing_numbers):
return decreasing_numbers[N]
else:
return -1
N = int(input())
result = get_decreasing_number(N)
print(result)
처음에는 문제를 보고 이해가 잘 안갔다.
이해하기 쉽도록 감소하는 수의 목록을 순서대로 나열해봤다.
0번째 : 0
1번째 : 1
2번째 : 2
3번째 : 3
4번째 : 4
5번째 : 5
6번째 : 6
7번째 : 7
8번째 : 8
9번째 : 9
10번째 : 10
11번째 : 20
12번째 : 21
13번째 : 30
14번째 : 31
15번째 : 32
16번째 : 40
17번째 : 41
18번째 : 42
19번째 : 43
...
이렇게 작아지는 숫자를 차례대로 가져오면 된다.
※ 알아야 할 것
문제를 잘 이해하고 빨리 푸는 것도 실력이다. 주어진 조건을 잘 해석하는 방법을 길러야 할 것 같다.
'코딩테스트(프로그래머스 & 백준) > 백준-Python' 카테고리의 다른 글
백준 / 방 번호 / 1475번 / Python (0) | 2024.06.04 |
---|---|
백준 / 다리 놓기 / 1010번 / Python (0) | 2024.06.03 |
백준 / 소수 / 1312번 / Python (0) | 2024.05.27 |
백준 / 평균 / 1546번 / Python (0) | 2024.05.24 |
백준 / 적어도 대부분의 배수 / 1145번 / Python (0) | 2024.05.24 |