몸과 마음이 건전한 SW 개발자

프로그래머스 [Lv. 2] 줄 서는 방법 {언어 : Python} [다시 풀어 보기] 본문

알고리즘/다시 풀어 보기

프로그래머스 [Lv. 2] 줄 서는 방법 {언어 : Python} [다시 풀어 보기]

스위태니 2024. 5. 19. 00:55

문제 링크

https://school.programmers.co.kr/learn/courses/30/lessons/12936?language=python3

 

프로그래머스

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

programmers.co.kr

정답 코드

def solution(n, k):
    # 팩토리얼 값을 미리 계산
    factorial = [1] * (n + 1)
    for i in range(2, n + 1):
        factorial[i] = factorial[i - 1] * i

    # 1부터 n까지의 숫자 리스트 생성
    numbers = list(range(1, n + 1))
    
    # 결과를 저장할 리스트
    result = []
    
    # k는 0-indexed로 변환
    k -= 1

    # 각 자리의 숫자를 결정
    for i in range(n, 0, -1):
        # 현재 자리의 숫자를 결정
        idx = k // factorial[i - 1]
        result.append(numbers[idx])
        # 사용한 숫자는 리스트에서 제거
        numbers.pop(idx)
        # k를 업데이트
        k %= factorial[i - 1]
    
    return result

풀이 방법

  • 모른다 그냥 외우는 수밖에

느낀점

  • 외울 때까지 다시 풀어봐야지.