Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | 6 | |
7 | 8 | 9 | 10 | 11 | 12 | 13 |
14 | 15 | 16 | 17 | 18 | 19 | 20 |
21 | 22 | 23 | 24 | 25 | 26 | 27 |
28 | 29 | 30 | 31 |
Tags
- 가상메모리
- 가상메모리 관리
- level0
- 다익스트라
- 그리디
- 수학
- 브루트포스
- 프로그래머스
- 힙
- dict
- programmers
- 딕셔너리
- DP
- level1
- 코딩테스트
- BFS
- python
- level3
- MYSQL
- 파이썬
- BOJ
- dfs
- 재귀
- 구현
- 운영체제
- 백준
- 다이나믹 프로그래밍
- level2
- N과M
- 스택
Archives
- Today
- Total
동캄의 코딩도장
프로그래머스 level3 [줄 서는 방법] 파이썬 본문
https://programmers.co.kr/learn/courses/30/lessons/12936
코딩테스트 연습 - 줄 서는 방법
n명의 사람이 일렬로 줄을 서고 있습니다. n명의 사람들에게는 각각 1번부터 n번까지 번호가 매겨져 있습니다. n명이 사람을 줄을 서는 방법은 여러가지 방법이 있습니다. 예를 들어서 3명의 사람
programmers.co.kr
# 프로그래머스 줄 서는 방법
import math
def solution(n, k):
answer = []
k -= 1
lst = [i for i in range(1, n+1)]
while n > 1:
p = math.perm(n-1)
answer.append(lst.pop(int(k//p)))
k = k % p
n -= 1
for val in lst:
answer.append(val)
return answer
위 문제는 재귀적으로 풀 수 있다.
n!개중에 k번째 = 맨 앞의 수(lst에서 k//(n-1)! 번째 수) + (n-1)!개중에 k%(n-1)!번째 를 더한 경우와 같다.
'코테 > 프로그래머스' 카테고리의 다른 글
프로그래머스 level3 [N으로 표현] 파이썬 (0) | 2022.04.13 |
---|---|
프로그래머스 level3 [하노이의 탑] 파이썬 (0) | 2022.04.11 |
프로그래머스 level3 [최고의 집합] 파이썬 (0) | 2022.04.11 |
프로그래머스 level3 [멀리 뛰기] 파이썬 (0) | 2022.04.11 |
프로그래머스 level3 [야근 지수] 파이썬 (0) | 2022.04.11 |