Skip to content

Latest commit

 

History

History
39 lines (30 loc) · 1.4 KB

풀이_줄서는방법.md

File metadata and controls

39 lines (30 loc) · 1.4 KB

🦎 프로그래머스 줄 서는 방법

  • Date : 2021.02.21(일)
  • Time : 25분

문제

  • n명의 사람이 일렬로 줄을 서고 있습니다. n명의 사람들에게는 각각 1번부터 n번까지 번호가 매겨져 있습니다. n명이 사람을 줄을 서는 방법은 여러가지 방법이 있습니다. 사람의 수 n과, 자연수 k가 주어질 때, 사람을 나열 하는 방법을 사전 순으로 나열 했을 때, k번째 방법을 return하는 solution 함수를 완성해주세요.
  • 제한사항
    • n은 20이하의 자연수 입니다.
    • k는 n! 이하의 자연수 입니다.



코드 풀이

    answer = []
    exList = [i for i in range(1, n + 1)]
    # 먼저 제일 첫번째 방법을 exList에 넣어둔다.

    while (n != 0):
        temp = factorial(n) // n
        # 방법의 총 수를 구하기 위해 팩토리얼을 구현해서 넣어주었다. math를 import 할 수도 있지만 직접 구현해보았다.

        index = k // temp
        # 인덱스를 추출한다
        k = k % temp

        if k == 0:
            answer.append(exList.pop(index - 1))
            # 나머지가 0일때는 -1을 진행해준다.
        else:
            answer.append(exList.pop(index))

        n -= 1
    return answer

: 모든 조합을 구한 후 n번째를 찾는 것이 아니라 바로 n번째를 찾는게 효율적으로 포인트였다.