π 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