세용용용용 2023. 10. 2. 14:42

코딩테스트 연습 - 줄 서는 방법 | 프로그래머스 스쿨 (programmers.co.kr)

 

프로그래머스

코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.

programmers.co.kr

 

첫 번쨰 코드

from itertools import permutations
def solution(n,k):
    answer = []

    line_list = []
    for i in range(n):
        line_list.append(i+1)
   
    number = 0
    for i in permutations(line_list, n):
        number += 1
        if number == k:
            answer = list(i)
    #print(answer)
    return answer
solution(3,5)

뭐야 왜이렇게 쉽지???...

응 타임오버~ ㅎㅎ..ㅎㅎ..ㅎㅎ

 

수정 코드

수학적으로 풀어야됨 맨처음 수부터 하나씩 구해나감

import math
def solution(n, k):
    answer = []
    num_list = []
    for i in range(n):
        num_list.append(i+1)
   
    k = k-1
    while num_list:
        # 맨 첫번째 자리부터 하나씩 구해나감
        a = k//math.factorial(n-1)
        answer.append(num_list[a])
        del num_list[a]

        k = k%math.factorial(n-1)
        n -= 1
   
    return answer
solution(3,5)