PS (Problem Solving)/Programmers

[프로그래머스] 불길한 수열 (불행한 수)(Unlucky Number)

캐럿노트 2022. 12. 12. 16:44

문제

4, 13, 413, 134와 같이 숫자가 13과 4를 이용해서 만들 수 있는 수를 불길한 수라고 한다. 그리고 불길한 수가 오름차순으로 나열된 수열을 불길한 수열이라고 한다. 예를 들어 불길한 수열은 다음과 같이 나열될 수 있다.

 

ex) S = {4, 13, 44, 134, 413, 444, 1313......}

 

n이 매개변수로 주어질 때, 불길한 수열에서 n번째 불길한 수를 구하시오.

 

 

제한사항

- n은 5,000이하의 자연수이다.

 

입출력 예

n result
1 4
2 13
3 44

 

 

설계

- index를 증가시키며 기존의 배열에서 지속적으로 4와 13을 붙여준다.

def solution(n):
    number = ['4', '13']
    index = 0
    while 1:    # index를 증가시키며 기존의 배열에서 지속적으로 4와 13을 붙여준다.
        if int(len(number) / 2) == n:     # appped를 2번씩 하니 전체 n의 개수만큼만 필요, 나누기 2만큼 반복하다
            break
        number.append(number[index] + '4')
        number.append(number[index] + '13')
        index += 1

    for i in range(len(number)):    # 정수로 변환 & 정렬
        number[i] = int(number[i])
    number.sort()

    return number[n - 1]