[BaekJoon] ๋ฐฑ์ค 15652๋ฒ : N๊ณผ M (4)
Updated:
15652๋ฒ : N๊ณผ M (4)
๋ฐฑํธ๋ํน ์๊ณ ๋ฆฌ์ฆ์ ์ฌ์ฉํ๋ฉด ๋๋ ๋ฌธ์ ์ด๋ค.
๋ฐฑํธ๋ํน์ด๋ DFS, BFS ๋ก ํ์์ ํ๋ฉด์ ๋ด๊ฐ ์ํ๋ ์กฐ๊ฑด์ ๋ง์ง ์๋ ๋ ธ๋์ ๋ฐฉ๋ฌธํ์๊ฒฝ์ฐ ๋ถ๋ชจ๋ ธ๋๋ก ๋๋์๊ฐ๋ ์๊ณ ๋ฆฌ์ฆ์ด๋ค.
n = 3, m = 3 ์ธ ๊ฒฝ์ฐ๋ก ์๋ฅผ ๋ค์ด๋ณด๋ฉด ๋ง์ฝ 2์์ 1๋ก ๊ฐ๋ ๊ฒฝ์ฐ ์กฐ๊ฑด์ ๋ง์ง ์๊ธฐ ๋๋ฌธ์ ๋ฐ๋ก ๋ถ๋ชจ๋ก ๋์๊ฐ๋ค.
import sys
def DFS(index):
global n, m, data, stack
if len(stack) == m:
print(*stack)
return
for i in range(index, n):
if stack and data[i] < stack[-1]:
continue
stack.append(data[i])
DFS(0)
stack.pop()
n, m = map(int, sys.stdin.readline().rsplit())
data = [i for i in range(1, n + 1)]
stack = []
DFS(0)
์ถ๊ฐ๋ก ๋ฆฌ์คํธ๋ฅผ ์์๋ง ์ถ๋ ฅํ๊ณ ์ถ์ ๊ฒฝ์ฐ print(*list) ๋ฅผ ์ฌ์ฉํ๋ฉด ๋๋ค.
import sys
from itertools import combinations_with_replacement
n, m = map(int, sys.stdin.readline().rsplit())
res = combinations_with_replacement(range(1, n+1), m)
for i in res:
print(*i)
๋ combination_with_replacement ๋ฅผ ์ฌ์ฉํ๋ฉด ๊ฐ์ ์๋ฅผ ์ฌ๋ฌ๋ฒ ๊ณ ๋ฅธ ์กฐํฉ์ ๋ง๋ค์ด์ค๋ค.
Leave a comment