관리 메뉴

솜씨좋은장씨

[BaekJoon] 1038번 : 감소하는 수 (Python) 본문

Programming/코딩 1일 1문제

[BaekJoon] 1038번 : 감소하는 수 (Python)

솜씨좋은장씨 2022. 4. 25. 12:34
728x90
반응형

코딩 1일 1문제! 오늘의 문제는 백준의 감소하는 수 입니다.

 

1038번: 감소하는 수

음이 아닌 정수 X의 자릿수가 가장 큰 자릿수부터 작은 자릿수까지 감소한다면, 그 수를 감소하는 수라고 한다. 예를 들어, 321과 950은 감소하는 수지만, 322와 958은 아니다. N번째 감소하는 수를

www.acmicpc.net

👨🏻‍💻 문제 풀이

0 ~ 9의 숫자와 조합을 활용하여 모든 감소하는 수를 만들고

입력 받은 N이 감소하는 수의 전체 개수 보다 작을 경우 N 번째 감소하는 수를

N이 전체 개수 보다 클 경우 -1 을 정답으로 하도록 했습니다.

👨🏻‍💻 코드 ( Solution )

from itertools import combinations

def get_all_decreasing_number():
    decreasing_number = []
    range_numbers = list(map(str, range(10)))
    for i in range(10):
        comb_list = [int("".join(sorted(comb, reverse=True))) 
                     for comb in list(combinations(range_numbers, i+1))]
        decreasing_number += comb_list
        
        
    decreasing_number = sorted(decreasing_number)    
    
    return decreasing_number

def nth_decreasing_number(N):
    answer = -1
    decreasing_number = get_all_decreasing_number()
    
    if N < len(decreasing_number):
        answer = decreasing_number[N]
        
    return answer


if __name__ == "__main__":
    N = int(input())
    print(nth_decreasing_number(N))
 

GitHub - SOMJANG/CODINGTEST_PRACTICE: 1일 1문제 since 2020.02.07

1일 1문제 since 2020.02.07. Contribute to SOMJANG/CODINGTEST_PRACTICE development by creating an account on GitHub.

github.com

Comments