๐๏ธ Algorithm/๐ฉ ๋ฐฑ์ค
[๋ฐฑ์ค] [Python] 15650๋ฒ_N๊ณผM(2)_๋ฐฑํธ๋ํน
Dbswnstjd
2022. 10. 11. 20:26
๋ฌธ์
https://www.acmicpc.net/problem/15650
15650๋ฒ: N๊ณผ M (2)
ํ ์ค์ ํ๋์ฉ ๋ฌธ์ ์ ์กฐ๊ฑด์ ๋ง์กฑํ๋ ์์ด์ ์ถ๋ ฅํ๋ค. ์ค๋ณต๋๋ ์์ด์ ์ฌ๋ฌ ๋ฒ ์ถ๋ ฅํ๋ฉด ์๋๋ฉฐ, ๊ฐ ์์ด์ ๊ณต๋ฐฑ์ผ๋ก ๊ตฌ๋ถํด์ ์ถ๋ ฅํด์ผ ํ๋ค. ์์ด์ ์ฌ์ ์์ผ๋ก ์ฆ๊ฐํ๋ ์์๋ก ์ถ๋ ฅํด
www.acmicpc.net
ํ์ด
1. DFS๋ฅผ ํตํ ํ์ด
# ๋ฐฑ์ค 15650๋ฒ ๋ฌธ์ - N ๊ณผ M (2)
N, M = map(int, input().split())
visited = [0 for _ in range(N)]
arr = []
def dfs(cnt):
if cnt == M:
print(*arr)
return
for i in range(N):
if visited[i] == 0:
visited[i] = 1 # ์ค๋ณต ์ ๊ฑฐ
arr.append(i+1)
dfs(cnt+1) # ๋ค์ ๊น์ด ํ์
arr.pop() # ํ์ฌํ ๋ด์ฉ ์ ๊ฑฐ
# ์์ด ๋ถ๋ถ๊ณผ์ ์ฐจ์ด์
for j in range(i+1, N):
visited[j] = 0
dfs(0)
2. Combination์ ํตํ ํ์ด
from itertools import combinations
N, M = map(int, input().split())
p = combinations(range(1, N+1), M)
for i in p:
print(*i)