Bakejoon/Gold

[Python] 백준 1174번 : 줄어드는 수 <Gold 5>

chattymin 2022. 5. 15. 15:13
728x90
반응형

⚠️ 내맘대로 작성한 코드이기 때문에 비합리적 진행과 근거없는 추론이 있을 수 있습니다!⚠️

 

https://www.acmicpc.net/problem/1174

 

1174번: 줄어드는 수

음이 아닌 정수를 십진법으로 표기했을 때, 왼쪽에서부터 자리수가 감소할 때, 그 수를 줄어드는 수라고 한다. 예를 들어, 321와 950은 줄어드는 수이고, 322와 958은 아니다. N번째로 작은 줄어드는

www.acmicpc.net

Code


import sys
input = sys.stdin.readline

num = int(input())

def search(kwd):
    result.append(int(kwd))
    for j in range(0,int(kwd[-1])):
        search(kwd + str(j))

if num > 1023:
    print(-1)
else:
    result = []
    for i in range(10):
        search(str(i))
    print(sorted(result)[num-1])

Code 필수 요소

1. 줄어드는 수 서치 알고리즘(재귀)

2. 정렬

 

이것만 생각해내면 절반은 끝났다.

 

// if 조건

저 범위를 넘어가면 조건을 넘어간다.

 

// 줄어드는 수 서치 알고리즘

result 배열을 생성하고, for문을 통해서 0부터 9까지 숫자를 활용한다. 여기서 줄어드는 수를 서치하는 알고리즘을 활용 했다.

for문의 3번째 사이클인 2로 설명하겠다.

search(str(2))로 search 함수를 호출한다.

그렇게 될 경우 int타입 2를 result배열에 추가한다.

다시 for문을 통해 0부터 2까지의 숫자를 재귀함수를 통해 search함수를 호출한다.

2

20

21

210

이러한 순서대로 result배열에 추가된다.

 

// 정렬

sorted라는 함수를 사용해서 한방에 해결했다.

 

파이썬 헷갈린다... C로 짠적이 있던 코드라서 알고리즘은 떠올렸는데 파이썬으로 활용하는게 어렵드라. 췟...

 

 

-꿑-

 

728x90
반응형