공부 기록장
[백준 - Python] 1038. 감소하는 수 (완전 탐색) 본문
https://www.acmicpc.net/problem/1038
코드
import sys
from itertools import combinations
input = sys.stdin.readline
n = int(input())
nums = []
for i in range(1, 11):
for com in combinations(range(0,10), i):
com = list(com)
com.sort(reverse=True)
nums.append(int("".join(map(str, com))))
nums.sort()
try:
print(nums[n])
except:
print(-1)
감소하는 수가 되면서 가능한 최대 자리수는 0까지 포함해서 10자리 수이다
조합 함수인 combinations함수를 이용해서
0~9까지의 숫자들 중에서 특정 자리 수만큼 조합을 뽑아낸다
뽑아낸 경우들을 감소하는 수로 만들기 위해
리스트로 변환해준 후, 내림차순 정렬을 해주고
join 함수를 이용해서 숫자 형태로 만들어준 후에
감소하는 수들을 저장하는 변수인 nums 변수에 저장해준다
문제에서 N번째 감소하는 수를 구하라고 했음으로
nums를 오름차순 정렬해 준 뒤
인덱스 N으로 구하려는 답을 출력해준다.
이때 N번째 감소하는 수가 없으면 -1을 출력하게 하라 했음으로
try ~ except 문으로 처리해줬다.
참고 자료
'코딩 테스트 > 백준 문제 풀이' 카테고리의 다른 글
[백준 - Python] 14501. 퇴사 (DP) (0) | 2024.02.18 |
---|---|
[백준 - Python] 2589. 보물섬 (완전 탐색) (0) | 2024.02.18 |
[백준 - Python] 1107. 리모컨 (완전 탐색) (0) | 2024.02.16 |
[백준 - Python] 2529. 부등호 (완전 탐색) (0) | 2024.02.16 |
[백준 - Python] 2579. 계단 오르기 (DP) (0) | 2024.02.16 |