250x250
Link
λ‚˜μ˜ GitHub Contribution κ·Έλž˜ν”„
Loading data ...
Notice
Recent Posts
Recent Comments
관리 메뉴

Data Science LAB

[Python] ν”„λ‘œκ·Έλž˜λ¨ΈμŠ€ μ½”λ”©ν…ŒμŠ€νŠΈ μ—°μŠ΅ level2 (μ€„μ„œλŠ” 방법) λ³Έλ¬Έ

πŸ“ Coding Test/Programmers

[Python] ν”„λ‘œκ·Έλž˜λ¨ΈμŠ€ μ½”λ”©ν…ŒμŠ€νŠΈ μ—°μŠ΅ level2 (μ€„μ„œλŠ” 방법)

γ…… γ…œ γ…” γ…‡ 2023. 1. 11. 22:15
728x90

1. 문제 μ„€λͺ…

nλͺ…μ˜ μ‚¬λžŒμ΄ 일렬둜 쀄을 μ„œκ³  μžˆμŠ΅λ‹ˆλ‹€. nλͺ…μ˜ μ‚¬λžŒλ“€μ—κ²ŒλŠ” 각각 1λ²ˆλΆ€ν„° nλ²ˆκΉŒμ§€ λ²ˆν˜Έκ°€ 맀겨져 μžˆμŠ΅λ‹ˆλ‹€. nλͺ…이 μ‚¬λžŒμ„ 쀄을 μ„œλŠ” 방법은 μ—¬λŸ¬κ°€μ§€ 방법이 μžˆμŠ΅λ‹ˆλ‹€. 예λ₯Ό λ“€μ–΄μ„œ 3λͺ…μ˜ μ‚¬λžŒμ΄ μžˆλ‹€λ©΄ λ‹€μŒκ³Ό 같이 6개의 방법이 μžˆμŠ΅λ‹ˆλ‹€.

  • [1, 2, 3]
  • [1, 3, 2]
  • [2, 1, 3]
  • [2, 3, 1]
  • [3, 1, 2]
  • [3, 2, 1]

μ‚¬λžŒμ˜ 수 nκ³Ό, μžμ—°μˆ˜ kκ°€ μ£Όμ–΄μ§ˆ λ•Œ, μ‚¬λžŒμ„ λ‚˜μ—΄ ν•˜λŠ” 방법을 사전 순으둜 λ‚˜μ—΄ ν–ˆμ„ λ•Œ, k번째 방법을 returnν•˜λŠ” solution ν•¨μˆ˜λ₯Ό μ™„μ„±ν•΄μ£Όμ„Έμš”.

 

 

 

 

 

2.μ œν•œμ‚¬ν•­

  • n은 20μ΄ν•˜μ˜ μžμ—°μˆ˜ μž…λ‹ˆλ‹€.
  • kλŠ” n! μ΄ν•˜μ˜ μžμ—°μˆ˜ μž…λ‹ˆλ‹€.

 

 

 

 

 

 

 

 

 

 

3. λ‚΄ 풀이

from math import factorial
def solution(n, k):
    answer = []
    waiting = list(range(1,n+1))
    k -= 1
    while n >= 1:
        n -= 1
        fac = factorial(n)
        ans = waiting.pop(k//fac)
        answer.append(ans)
        k = k%fac
    return answer

 

 

 

 

 

 

 

4. λ‹€λ₯Έ μ‚¬λžŒ 풀이

from math import factorial
def solution(n, k):
    answer = []
    nums = list(range(1, n+1))
    order = []
    k -= 1
    for i in range(n-1, -1, -1):
        temp = factorial(i)
        q, r = divmod(k, temp)
        k = r
        order.append(q)
    # print(order)
    for idx in order:
        answer.append(nums.pop(idx))

    return answer
728x90
Comments