BOJ 1038 감소하는 수

김재섭·2021년 4월 17일
0

백준

목록 보기
7/10

문제

아이디어

  • 감소하는 수의 최댓값은 9876543210
  • 기본적으로 감소하는 수 리스트에 0~10은 추가하고 시작
  • 리스트 첫 번째 인덱스부터 접근하면서 (해당 숫자의 큰 자릿수+1) ~ 9까지 앞에 붙여준다.
    ex) 654 -> 7~9 + 654

코드

N = int(input())
lst = [i for i in range(10)]
top = 0 

while lst[-1] < 9876543210:
    s = str(lst[top])

    for i in range(int(s[0])+1, 10):
        lst.append(int(str(i) + str(s)))

    top += 1

lst = sorted(lst)

print(lst[N] if len(lst) > N else -1) 

리뷰

  • 접근하는 방식만 찾으면 구현은 어렵지 않은 문제
  • 다른 사람들의 숏코드를 보면 속도는 거의거의 비슷하다
  • 차이점이라면 대부분 재귀로 접근하는 것 같다.

GIT

profile
오만가지에 관심이 있는 사람

0개의 댓글

관련 채용 정보