|
์ฝ๋ ์์ฑํ๊ธฐ
import sys
input = sys.stdin.readline
def dfs():
if len(nums) == m:
print(*nums)
return
for i in range(1, n+1):
if not checked[i]:
checked[i] = True
nums.append(i)
dfs()
checked[i] = False
nums.pop()
n,m = map(int, input().split())
nums = []
checked = [False] * (n+1)
dfs()
Python
๋ณต์ฌ
|
์ฝ๋ ์ค๋ช
ํ๊ธฐ
1.
๊ณต๋ฐฑ์ ๊ธฐ์ค์ผ๋ก n,m์ ์
๋ ฅ ๋ฐ๊ณ , ์์ด์ ๋ด์์ค nums ๋ฆฌ์คํธ์, ์ฒดํฌ ์ฌ๋ถ๋ฅผ ๊ธฐ๋กํ checked ๋ฆฌ์คํธ๋ฅผ ์์ฑํด์ค๋๋ค.
2.
dfs() ํจ์๋, ์์ด์ ์ถ๋ ฅํด์ฃผ๊ธฐ ์ํ ํจ์๋ก, DFS์ ์๋ฆฌ๊ฐ ๊ตฌํ๋ ํจ์์
๋๋ค.
3.
์ฒดํฌ ๋์ง ์์ ์๋ ์ฒดํฌํด์ค๋๋ค.
4.
์ฒดํฌํ ์๋ฅผ ์์ด ๋ฆฌ์คํธ์ ๋ด์์ค๋๋ค.
5.
dfs()๋ฅผ ์ฌ๊ท์ ์ผ๋ก ํธ์ถํ์ฌ, ์ฒดํฌ๋์ด ์์ง ์์ ์๋ฅผ ์ฒดํฌํด์ฃผ๊ณ , ์์ด ๋ฆฌ์คํธ์ ๋ด์์ค๋๋ค.
6.
์์ด์ ๊ธธ์ด๊ฐ m๊ณผ ๊ฐ์ ๊ฒฝ์ฐ, ๋ฆฌ์คํธ๋ฅผ ์ถ๋ ฅํด์ฃผ๊ณ ํจ์๋ฅผ ์ข
๋ฃ์์ผ์ค๋๋ค.
7.
์ฌ๊ท ํจ์๊ฐ ์ข
๋ฃ๋์์ผ๋ฉด ๋ค์ ํธ์ถ๋ ๊ณณ์ผ๋ก ๋์์, ๊ทธ ๋ i์ ์ฒดํฌ ์ฌ๋ถ๋ฅผ ์ด๊ธฐํ ํด์ฃผ๊ณ , ์์ด ๋ฆฌ์คํธ์์ i๋ฅผ ์ ์ธ ์ํต๋๋ค.
8.
3-7์ ๊ณผ์ ์ n๊น์ง ๋ฐ๋ณตํฉ๋๋ค.