PS

[๋ฐฑ์ค€] 15651 N๊ณผ M (3) with Python

ํ˜•์ค€_It's 2023. 4. 18. 15:52
728x90
๋ฐ˜์‘ํ˜•

๐Ÿ“Œ BOJ 15651 N๊ณผ M (3)

๐Ÿ’ก ์กฐ๊ฑด

  1. ์ž์—ฐ์ˆ˜ N๊ณผ M์ด ์ฃผ์–ด์กŒ์„ ๋•Œ, ์•„๋ž˜ ์กฐ๊ฑด์„ ๋งŒ์กฑํ•˜๋Š” ๊ธธ์ด๊ฐ€ M์ธ ์ˆ˜์—ด์„ ๋ชจ๋‘ ๊ตฌํ•˜๋Š” ํ”„๋กœ๊ทธ๋žจ์„ ์ž‘์„ฑํ•˜์‹œ์˜ค.

  2. 1๋ถ€ํ„ฐ N๊นŒ์ง€ ์ž์—ฐ์ˆ˜ ์ค‘์—์„œ M๊ฐœ๋ฅผ ๊ณ ๋ฅธ ์ˆ˜์—ด
    ๊ฐ™์€ ์ˆ˜๋ฅผ ์—ฌ๋Ÿฌ ๋ฒˆ ๊ณจ๋ผ๋„ ๋œ๋‹ค.

  3. ์ฒซ์งธ ์ค„์— ์ž์—ฐ์ˆ˜ N๊ณผ M์ด ์ฃผ์–ด์ง„๋‹ค. (1 โ‰ค M โ‰ค N โ‰ค 7)

  4. ํ•œ ์ค„์— ํ•˜๋‚˜์”ฉ ๋ฌธ์ œ์˜ ์กฐ๊ฑด์„ ๋งŒ์กฑํ•˜๋Š” ์ˆ˜์—ด์„ ์ถœ๋ ฅํ•œ๋‹ค.

  5. ํ•œ ์ค„์— ํ•˜๋‚˜์”ฉ ๋ฌธ์ œ์˜ ์กฐ๊ฑด์„ ๋งŒ์กฑํ•˜๋Š” ์ˆ˜์—ด์„ ์ถœ๋ ฅํ•œ๋‹ค.
    ์ค‘๋ณต๋˜๋Š” ์ˆ˜์—ด์„ ์—ฌ๋Ÿฌ ๋ฒˆ ์ถœ๋ ฅํ•˜๋ฉด ์•ˆ๋˜๋ฉฐ, ๊ฐ ์ˆ˜์—ด์€ ๊ณต๋ฐฑ์œผ๋กœ ๊ตฌ๋ถ„ํ•ด์„œ ์ถœ๋ ฅํ•ด์•ผ ํ•œ๋‹ค.
    ์ˆ˜์—ด์€ ์‚ฌ์ „ ์ˆœ์œผ๋กœ ์ฆ๊ฐ€ํ•˜๋Š” ์ˆœ์„œ๋กœ ์ถœ๋ ฅํ•ด์•ผ ํ•œ๋‹ค.

  6. ๋ฐฑํŠธ๋ž˜ํ‚น ์œ ํ˜•์˜ ๋ฌธ์ œ

๐Ÿ”– ์˜ˆ์ œ ๋ฐ ์‹คํ–‰๊ฒฐ๊ณผ

์˜ˆ์ œ 1

3 1

์‹คํ–‰๊ฒฐ๊ณผ 1

1
2
3

์˜ˆ์ œ 2

4 2

์‹คํ–‰๊ฒฐ๊ณผ 2

1 1
1 2
1 3
1 4
2 1
2 2
2 3
2 4
3 1
3 2
3 3
3 4
4 1
4 2
4 3
4 4

์˜ˆ์ œ 3

3 3

์‹คํ–‰๊ฒฐ๊ณผ 3

1 1 1
1 1 2
1 1 3
1 2 1
1 2 2
1 2 3
1 3 1
1 3 2
1 3 3
2 1 1
2 1 2
2 1 3
2 2 1
2 2 2
2 2 3
2 3 1
2 3 2
2 3 3
3 1 1
3 1 2
3 1 3
3 2 1
3 2 2
3 2 3
3 3 1
3 3 2
3 3 3

โŒจ๏ธ ๋ฌธ์ œ ํ’€์ด

  1. ์žฌ๊ท€ํ•จ์ˆ˜๋ฅผ ํ†ตํ•ด์„œ ๋ฐฑํŠธ๋ž˜ํ‚น์„ ํ•œ๋‹ค.

  2. ํ•จ์ˆ˜ f์—์„œ๋Š” ํŒŒ๋ผ๋ฏธํ„ฐ๋ฅผ ์•„๋ž˜์™€ ๊ฐ™์ด ๋ฐ›๋Š”๋‹ค.

    • arr : ๋ฐฑํŠธ๋ž˜ํ‚น์„ ์ˆ˜ํ–‰ํ•˜๋ฉด์„œ f ํ•จ์ˆ˜๋ฅผ ์žฌ๊ท€ํ•˜๋ฉฐ ์ž์—ฐ์ˆ˜๋ฅผ ๋‹ด์„ ๋ฐฐ์—ด
    • cnt : arr์— ๋‹ด๊ธด ์ˆ˜์˜ ๊ฐœ์ˆ˜
  3. cnt ์™€ m ์ด ๊ฐ™์•„์ง€๋ฉด ๊ฒฐ๊ณผ๊ฐ’์„ ๋‹ด์€ ๋ฐฐ์—ด์„ ์ถœ๋ ฅํ•œ๋‹ค. ๊ทธ๋ฆฌ๊ณ  ํ•จ์ˆ˜๋ฅผ ํƒˆ์ถœ.

  4. (3)๋ฒˆ์˜ ์กฐ๊ฑด์ด ๋งž์ง€ ์•Š์œผ๋ฉด 1๋ถ€ํ„ฐ n ๊นŒ์ง€ ์ˆœํ™˜ํ•˜๋ฉด์„œ ์žฌ๊ท€ ๋ฐ ๋ฐฑํŠธ๋ž˜ํ‚น์„ ์ง„ํ–‰ํ•œ๋‹ค.

๐Ÿ–ฅ ์†Œ์Šค ์ฝ”๋“œ

from sys import stdin, setrecursionlimit

setrecursionlimit(10 ** 7)
n, m = map(int, stdin.readline().split())


def f(arr, cnt):
    if cnt == m:
        print(*arr)
        return

    for i in range(1, n + 1):
        f(arr + [i], cnt + 1)

f([], 0)
๋ฐ˜์‘ํ˜•