ํฐ์คํ ๋ฆฌ ๋ทฐ
N๊ณผ M ์๋ฆฌ์ฆ
- ์์๊ฐ 1์์ N์ธ ๊ฒฝ์ฐ
-
์์๊ฐ ์ฃผ์ด์ง๋ ๊ฒฝ์ฐ
- N๊ณผ M (5 ~ 8)
- N๊ณผ M (1 ~ 4)์์ ์์์ ๋ํ ์ฒ๋ฆฌ๋ง ์ถ๊ฐํ๋ฉด ๋๋ค.
-
์ค๋ณต ์์๊ฐ ์กด์ฌํ๋ ๊ฒฝ์ฐ
- 15663 N๊ณผ M (9)
- N๊ณผ M (10 ~ 12)๋ (9)์ ๊ฐ์ด set์ ํ์ฉํ๋ฉฐ ๋ก์ง์ N๊ณผ M 2 - 4์ ๋์ผํ๋ค.
๋ฌธ์
15652๋ฒ: N๊ณผ M (4)
ํ ์ค์ ํ๋์ฉ ๋ฌธ์ ์ ์กฐ๊ฑด์ ๋ง์กฑํ๋ ์์ด์ ์ถ๋ ฅํ๋ค. ์ค๋ณต๋๋ ์์ด์ ์ฌ๋ฌ ๋ฒ ์ถ๋ ฅํ๋ฉด ์๋๋ฉฐ, ๊ฐ ์์ด์ ๊ณต๋ฐฑ์ผ๋ก ๊ตฌ๋ถํด์ ์ถ๋ ฅํด์ผ ํ๋ค. ์์ด์ ์ฌ์ ์์ผ๋ก ์ฆ๊ฐํ๋ ์์๋ก ์ถ๋ ฅํด
www.acmicpc.net
๋ฌธ์ ํ์ด
์์ ํผ ๋ฌธ์ ์ค 15650 N๊ณผ M (2)๋ ์ค๋ณต์ ํ์ฉํ์ง ์๋ ์กฐํฉ์ ๊ตฌํ๋ ๋ฌธ์ ์๋ค. ํ์ง๋ง ์ด ๋ฌธ์ ๋ N๊ฐ์ ์์๋ฅผ M๊ฐ ์ ํํ ๋ ์ค๋ณต์ ํ์ฉํ๋ ์กฐํฉ์ ๊ตฌํ๋ ๋ฌธ์ ์ด๋ค. ์ค๋ณต์ ํ์ฉํ์ง ์๋ ์กฐํฉ์ ๋ํ ๋ก์ง์ ์ดํดํ์๋ค๋ฉด ์ด ๋ฌธ์ ๋ ์ฝ๊ฒ ํ ์ ์๋ค. ๊ธฐ์กด ์กฐํฉ์ ๊ตฌํ ๋๋ ์ฌ๊ท ํธ์ถ์ ํ ๋, ํ์ฌ ์ ํ๋ ์์๋ฅผ ์ ํํ์ง ์๋๋ก ์ธ๋ฑ์ค์ +1 ์ฉ ์ฆ๊ฐ์์ผ์ฃผ์๋ค. ํ์ง๋ง ๋์ผํ ์ธ๋ฑ์ค๋ฅผ ํธ์ถ ํ ์ ์๋๋ก ํ๋ฉด ์ค๋ณต ์กฐํฉ์ ๊ตฌํ ์ ์๋ค.
์ฝ๋
DFS๋ฅผ ์ฌ์ฉํ ๋ฌธ์ ํ์ด
from sys import stdin
# ์์ด๊ณผ ๋ฌ๋ฆฌ ํ์ฌ ์ธ๋ฑ์ค์ ๊ฐ์ด ํ์ํจ.
def dfs(idx, depth):
global answer
# ์ฌ๊ท ์ข
๋ฃ ์กฐ๊ฑด → ์ ํํ๊ณ ์ ํ๋ ์
if depth == m:
answer.append([*check])
else:
for i in range(idx, n):
check[depth] = i + 1
dfs(i, depth + 1)
if __name__ == '__main__':
answer = []
n, m = map(int, stdin.readline().split())
check = [0] * m
dfs(0, 0)
for num in answer:
print(*num)
itertools combinations_with_replacement๋ฅผ ํ์ฉํ ๋ฌธ์ ํ์ด
from itertools import combinations_with_replacement
N, M = map(int, input().split())
nums = [num + 1 for num in range(N)]
for cases in combinations_with_replacement(nums, M):
for case in cases:
print(case, end=' ')
print()'๐จโ๐ป ์ฝ๋ฉํ ์คํธ > ๋ฐฑ์ค' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
| ๋ฐฑ์ค: 10972 ๋ค์ ์์ด (0) | 2020.07.15 |
|---|---|
| ๋ฐฑ์ค: 15663 N๊ณผ M (9) (0) | 2020.07.14 |
| ๋ฐฑ์ค: 15651 N๊ณผ M (3) (0) | 2020.07.14 |
| ๋ฐฑ์ค: 15650 N๊ณผ M (2) (0) | 2020.07.14 |
| ๋ฐฑ์ค: 15649 N๊ณผ M (1) (0) | 2020.07.14 |