ํฐ์คํ ๋ฆฌ ๋ทฐ
ํ๋ก๊ทธ๋๋จธ์ค: ์ค ์๋ ๋ฐฉ๋ฒ
dirmathfl 2020. 10. 26. 23:08๋ฌธ์
๋ฌธ์ ํ์ด
์ฒ์ ๋ฌธ์ ๋ฅผ ์ ํ์์ ๋๋ `DFS`๋ฅผ ํตํด ๊ฐ ๊ฒฝ์ฐ์ ์๋ฅผ ๊ตฌํ๊ณ `K`์ธ ๊ฒฝ์ฐ๋ฅผ ๋ฐํํ๋ฉด ๋์ง ์์๊น ์๊ฐํ๋ค. ํ์ง๋ง ์ด ๋ฐฉ์์ `N`์ด 20์ด๋ฏ๋ก ์๊ฐ ์ด๊ณผ๊ฐ ๋ฐ์ํ๋ค. ๋ฐ๋ผ์ `K`์ธ ๊ฒฝ์ฐ๋ฅผ ๋ฐ๋ก ๊ตฌํ ์ ์๋ ๋ฐฉ๋ฒ์ ํตํด ํ์ด์ผ ์๊ฐ ์ด๊ณผ๊ฐ ๋ฐ์ํ์ง ์๋๋ค. ์ฆ, ์ด ๋ฌธ์ ๋ ๋จ์ํ `DFS`๋ฅผ ํตํด ์กฐํฉ์ ๊ตฌํ ์ ์๋๊ฐ?๋ฅผ ๋ฌป๋ ๋ฌธ์ ๊ฐ ์๋ ํฉํ ๋ฆฌ์ผ ์ฑ์ง์ ํตํด ํจ์จ์ ์ผ๋ก K์ธ ๊ฒฝ์ฐ์ ์กฐํฉ์ ์ฐพ์ ์ ์๋๊ฐ?๋ฅผ ๋ฌป๋ ๋ฌธ์ ์ด๋ค.
์๋ฅผ ๋ค์ด N์ด 3์ธ ๊ฒฝ์ฐ, ๊ฒฝ์ฐ์ ์๋ ๋ค์๊ณผ ๊ฐ์ด ๋์ดํ ์ ์๋ค.
- `[1, 2, 3]`, `[1, 3, 2]`
- `[2, 1, 3]`, `[2, 3, 1]`
- `[3, 1, 2]`, `[3, 2, 1]`
์ฆ, ์์๋ฆฌ ์์ ๋ฐ๋ผ 2๊ฐ์ง ๊ฒฝ์ฐ๊ฐ ๋ฐ์ํ๋ค๋ ๊ฒ์ ์ ์ ์๋ค. ๋ฐ๋ผ์ ์ฒซ ๋ฒ์งธ์ ์ฌ ์ ์๋ ๊ฒฝ์ฐ์ ์๋ `(N - 1)!`๊ณผ ๊ฐ๋ค. ์ด์ ๊ฐ์ ์ฑ์ง์ ์ด์ฉํ์ฌ `K`๋ฅผ `(N - 1)!`๋ก ๋๋๋ฉด ์ฒซ ๋ฒ์งธ ์๋ฆฌ์ ์ด๋ค ์ซ์๊ฐ ์ค๋์ง ์ฐพ์ ์ ์๋ค. ์ด๋ฅผ ํตํด `DFS`์ ๋ฌ๋ฆฌ `K`์ธ ๊ฒฝ์ฐ์ ๊ฐ ์๋ฆฟ์๋ฅผ ์ฐพ์ ์ ์๋ค.
์ฝ๋
from math import factorial
def solution(n, k):
answer = []
nums = list(range(1, n + 1))
while n != 0:
f = factorial(n - 1)
answer.append(nums.pop((k - 1) // f))
n -= 1
k %= f
return answer
'๐จโ๐ป ์ฝ๋ฉํ ์คํธ > ํ๋ก๊ทธ๋๋จธ์ค' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
ํ๋ก๊ทธ๋๋จธ์ค: SQL - String, Date (0) | 2020.10.28 |
---|---|
ํ๋ก๊ทธ๋๋จธ์ค: SQL - JOIN (0) | 2020.10.28 |
ํ๋ก๊ทธ๋๋จธ์ค: ๋ฉ๋ฆฌ ๋ฐ๊ธฐ (0) | 2020.10.26 |
ํ๋ก๊ทธ๋๋จธ์ค: ๋ฐฉ๋ฌธ ๊ธธ์ด (0) | 2020.10.25 |
ํ๋ก๊ทธ๋๋จธ์ค: ์ ๊ตญ์ฌ์ฌ (0) | 2020.10.25 |