๋ฐ์ํ
๐ฑ ๋ฌธ์
- 1๋ถํฐ N๊น์ง ์์ฐ์ ์ค์์ ์ค๋ณต ์์ด M๊ฐ๋ฅผ ๊ณ ๋ฅธ ์์ด์ ๋ชจ๋ ์ถ๋ ฅ
- ์์ด์ ์ฌ์ ์์ผ๋ก ์ฆ๊ฐ
๐ฑ ํ์ด 1) ํ์ด์ฌ ๋ผ์ด๋ธ๋ฌ๋ฆฌ ์ฌ์ฉ
๋ฐฑํธ๋ํน ์๊ณ ๋ฆฌ์ฆ์ ๋ํ์ ์ธ ๋ฌธ์ ๋ผ๊ณ ํด์ ํ์ด๋ณธ๊ฑด๋ฐ ๋ฌธ์ ์ฝ์๋ง์ ๊ทธ๋ฅ permutations ์ฐ๋ฉด ๋๋ ๊ฒ ์๋ ? ! ?
๊ทธ๋์ ์์ด ๋ฝ์์ฃผ๋ permutations ๋ผ์ด๋ธ๋ฌ๋ฆฌ ์จ์ ์ ์ถํ๋๊น ์ ๋ต,, ๐
from itertools import permutations
n, m = map(int, input().split())
num_list = [_ for _ in range(1, n + 1)]
for p in permutations(num_list, m):
print(*p)
๊ฒฐ๋ก ์ ํ์ด์ฌ ๋๊ฐ ์งฑ (?)
๐ฑ ํ์ด 2) ๋ฐฑํธ๋ํน
๊ทธ๋๋ ๋ฐฑํธ๋ํน ๋ฌธ์ ์ด๋ ๋ฐฑํธ๋ํน์ ์ฌ์ฉํด์ ๋ฌธ์ ๋ฅผ ํ์ด๋ด ์๋ค. ๋ฐฑํธ๋ํน์ ํ์ฌ ์ํ์์ ๊ฐ๋ฅํ ๋ชจ๋ ํ๋ณด๊ตฐ์ ๋ฐ๋ผ ๋ค์ด๊ฐ๋ฉฐ ํ์ํ๋ ์๊ณ ๋ฆฌ์ฆ์ ๋๋ค.
N๊ณผ M(1) ๋ฌธ์ ์ ์ํ ๊ณต๊ฐ ํธ๋ฆด๋ฅด ๊ฐ๋ตํ๊ฒ ๋ํ๋ด๋ฉด ์์ ๊ฐ์ต๋๋ค.
answer = []
def backtracking():
if len(answer) == m:
print(" ".join(map(str, answer)))
return
for i in range(1, n + 1):
if i not in answer:
answer.append(i)
backtracking()
answer.pop()
backtracking()
- ๋ฐ๋ณต๋ฌธ์ ๋๋ฉด์ ํด๋น ์ซ์๊ฐ ๋ฐฐ์ด(
answer
)์ ์๋ค๋ฉด ๋ฐฐ์ด์ ์ฑ์๋๋ค. - ๊ทธ๋ฆฌ๊ณ
backtracking()
์ฌ๊ท ํจ์๋ฅผ ํธ์ถํฉ๋๋ค. ์ด๋backtracking()
์ฌ๊ท ํจ์๋ ์ ๋ต์ ๋ง์กฑ์ํค๋ฉด returnํ๋๋ก ์์ฑํฉ๋๋ค. backtracking()
์์ return๋์ง ์์ผ๋ฉด ๋ค์ ๋ฐ๋ณต๋ฌธ์ ๋๋ฉด์ ๋answer
์ ์ฑ์ธ๊ฒ๋๋ค.- ๋ง์ฝ ๋ฐฐ์ด์ด ๋ค ์ฑ์์ ธ ์์ผ๋ฉด
backtracking()
์์ return์ด ๋ฉ๋๋ค. ๊ทธ๋ฌ๋ฉดanswer.pop()
์ ํตํด ๋ฐฐ์ด์ด ์ด์ ์ํ๋ก ๋์๊ฐ๊ฒ ๋ฉ๋๋ค.
๐ฑ ์ ๋ต ์ฝ๋
# !/usr/bin/env python
# -*- coding: utf-8 -*-
# boj 15649 N๊ณผ M(1)
from itertools import permutations
n, m = map(int, input().split())
# ํ์ด 1 (ํ์ด์ฌ ๋ผ์ด๋ธ๋ฌ๋ฆฌ ์ฌ์ฉ)
num_list = [_ for _ in range(1, n + 1)]
for p in permutations(num_list, m):
print(*p)
# ํ์ด 2 (๋ฐฑํธ๋ํน)
answer = []
def backtracking():
if len(answer) == m:
print(" ".join(map(str, answer)))
return
for i in range(1, n + 1):
if i not in answer:
answer.append(i)
backtracking()
answer.pop()
backtracking()
๋ฐ์ํ
'Algorithm' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[BOJ] #4179 ๋ถ! (Python, BFS) (1) | 2023.10.14 |
---|---|
[BOJ] #2758 ๋ก๋ (Python, Dynamic Programming) (1) | 2023.10.14 |
[BOJ] 11729 ํ๋ ธ์ด ํ ์ด๋ ์์ (Python, Recursion) (0) | 2023.09.30 |
[ํ๋ก๊ทธ๋๋จธ์ค] ๊ด๋ฌผ ์บ๊ธฐ (Python, ๊ตฌํ) (0) | 2023.09.30 |
[ํ๋ก๊ทธ๋๋จธ์ค] ๊ณผ์ ์งํํ๊ธฐ(Python, Stack, Implementation) (0) | 2023.09.29 |
๋๊ธ