Chapter12. ꡬν
[λ¬Έμ 55] μ€ μλ λ°©λ² - Level2
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! μ΄νμ μμ°μμ
λλ€.
[λ¬Έμ νμ΄]
from itertools import permutations
def solution(n, k):
return list(permutations([i + 1 for i i range(n)]))[k - 1]
[μ½λμμ±]
1. μ΄κΈ° μ€μ μ§ν
def solution(n, k):
numbers = list(range(1, n + 1)
answer = []
k -= 1
2. 곡μμΌλ‘ κ³μ°νλ©° μ«μ μ°ΎκΈ°
from math import factorial
while numbers:
idx, k = divmod(k, factorial(len(numbers) - 1))
answer.apppend(numbers.pop(idx))
[μ 체μ½λ]
from math import factorial
def solution(n, k):
numbers = list(range(1, n + 1)
answer = []
k -= 1
while numbers:
idx, k = divmod(k, factorial(len(numbers) - 1))
answer.apppend(numbers.pop(idx))
return answer