*문제 출처는 프로그래머스에 있습니다.
문제 제목: 줄 서는 방법 (2단계)
문제 사이트: https://school.programmers.co.kr/learn/courses/30/lessons/12936
문제 설명
나의 풀이
from itertools import permutations
def solution(n, k):
answer = []
line = []
cnt = 1
for i in range(1, n + 1):
line.append(i)
for i in permutations(line, n):
if cnt == k:
return list(i)
else:
cnt += 1
return answer
print(solution(3, 5))
테스트는 통과했지만 효율성에서 떨어진 코드다
def factorial(n):
if n < 1:
return 1
else:
return n * factorial(n - 1)
def solution(n, k):
answer = []
line = [i for i in range(1, n + 1)]
while(n != 0):
cnt = factorial(n - 1)
idx = k // cnt
k = k % cnt
if k == 0:
answer.append(line.pop(idx - 1))
else:
answer.append(line.pop(idx))
n -= 1
return answer
※ 알아야 할 것
from itertools import permutations 를 통해서 순열에 관련한 라이브러리를 사용할 수 있다.
'코딩테스트(프로그래머스 & 백준) > 프로그래머스-Python' 카테고리의 다른 글
Programmers / 두 큐 합 같게 만들기 / Python (0) | 2024.07.09 |
---|---|
Programmers / 쿼드압축 후 개수 세기 / Python (0) | 2024.07.08 |
Programmers / 기지국 설치 / Python (0) | 2024.06.28 |
Programmers / 2개 이하로 다른 비트 / Python (0) | 2024.06.27 |
Programmers / 숫자 게임 / Python (1) | 2024.06.24 |