π λ¬Έμ μ€λͺ
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 ν¨μλ₯Ό μμ±ν΄μ£ΌμΈμ.
μ νμ¬ν
- nμ 20μ΄νμ μμ°μ μ λλ€.
- kλ n! μ΄νμ μμ°μ μ λλ€.
μ μΆλ ₯ μ
3 | 5 | [3,1,2] |
μ μΆλ ₯ μμ μ€λͺ
μ
μΆλ ₯ μ #1
λ¬Έμ μ μμμ κ°μ΅λλ€.
π νμ΄ μ½λ
import math
def solution(n, k):
answer = []
people = [i for i in range(1, n+1)]
for i in range(1, n+1):
divider = math.factorial(n-i)
idx = k // divider
if k % divider == 0:
idx -= 1
answer.append(people[idx])
people.pop(idx)
k -= idx * divider
return answer
κ·μΉ μ°ΎκΈ° λ¬Έμ λ€.
λΈλ£¨νΈν¬μ€λ‘ ꡬνλ©΄ μ΄λ§μ΄λ§ν μ°μ° νμμ μν΄ μκ°μ΄κ³Όκ° λλ€.
λ¬Έμ μμ λμ¨ μΌμ΄μ€λ₯Ό λ°νμΌλ‘ 보μ.
- [1, 2, 3]
- [1, 3, 2]
- [2, 1, 3]
- [2, 3, 1]
- [3, 1, 2]
- [3, 2, 1]
3λͺ μ μμλλ‘ μ€μ μΈμ°λ λ°©λ²μ μ¬μ μμΌλ‘ μ λ ¬ν κ²°κ³Όλ€.
κ°μ₯ μμ μ¬λμ 보면, 1λ², 2λ², 3λ² μ¬λμ΄ λμ€λ ꡬκ°μ΄ μλ€.
κ° κ΅¬κ°μ ν¬κΈ°λ (n-1)!μ΄λ€.
λ°λΌμ (n-1)!μ ꡬκ°μ΄ μ΄ nκ° μμΌλ―λ‘ n!μ μ€ μΈμ°κΈ° κ²°κ³Όκ° λμ€λ κ²μ΄λ€.
answer λ°°μ΄μ κ°μ₯ 첫 λ²μ§Έ μ리μ μ¬ μ¬λμ ꡬνλ λ°©λ²μ λ¬Έμ μμ μ£Όλ kλ₯Ό νμ©νλ κ²μ΄λ€.
kλ²μ§Έ μ¬λμ΄ μ΄λ ꡬκ°μ μνλμ§λ₯Ό νλ¨νλ€. ꡬκ°μ ν¬κΈ°κ° (n-1)!μ΄λ―λ‘, k // (n-1)!μ ν΄μ€λ€. μ΄κ²μ λ€μ λμ€λ peopleμ indexλ‘ μ΄λ€.
people λ°°μ΄μ 1λ² μ¬λλΆν° nλ² μ¬λκΉμ§ λ°°μΉμμΌλκ³ , index + 1λ²μ§Έ λ²νΈμ μ¬λμ΄ answerμ λ€μ΄κ°μΌ νλ―λ‘, indexλ‘ μ κ·Όνλ©΄ λλ€.
μμΈμ κ²½μ°, kκ° (n-1)!μ λ°°μλΌλ©΄ index μ΄κ³Όκ° λκΈ° λλ¬Έμ index-1μ ν΄μ€λ€.
μλ₯Ό λ€μ΄, n=3, k=6μΈ κ²½μ°, 6μ (n-1)!μΈ 2μ λ°°μμ΄κΈ° λλ¬Έμ idxκ° 3μ΄ λμ¨λ€. n=3μ΄λ©΄ people λ°°μ΄ μ μ¬λμ 3λͺ μ΄λ―λ‘ indexκ° 0, 1, 2λ‘ 3μ μ‘΄μ¬νμ§ μλλ€. μ΄ κ²½μ°λ₯Ό μμΈμ²λ¦¬νκΈ° μν΄μ index-1μ ν΄μ€λ€.
answerμ μ§μ΄λκ³ , ν΄λΉ μ¬λμ μ€μ μΈμ μΌλ λκΈ°μ΄μμ ν΄λΉ μ¬λμ μ κ±°νλ€. (people pop)
κ·Έ λ€μ λ°λ³΅λ¬Έμμλ kλ²μ§Έ μ¬λμ΄ μλλΌ μμ idxλ²μ ꡬκ°μ μ§λ νμ μ¬λμ μ°ΎμμΌ νλ―λ‘ idx * dividerλ₯Ό λΉΌμ€λ€.
'π μ½λ©ν μ€νΈ λλΉ : PS' μΉ΄ν κ³ λ¦¬μ λ€λ₯Έ κΈ
[νλ‘κ·Έλλ¨Έμ€] λ°°λ¬ (level2, python) (0) | 2022.10.13 |
---|---|
[νλ‘κ·Έλλ¨Έμ€] μ¬ μ°κ²°νκΈ° (level3, python) (1) | 2022.10.13 |
[νλ‘κ·Έλλ¨Έμ€] κ°μ₯ λ¨Ό λ Έλ (level3, python) (0) | 2022.10.13 |
[νλ‘κ·Έλλ¨Έμ€] λ°©κΈκ·Έκ³‘ (level2, python) (1) | 2022.10.13 |
[νλ‘κ·Έλλ¨Έμ€] νλ ¬ ν λ리 νμ (level2, python) (0) | 2022.10.13 |