๋ณธ๋ฌธ ๋ฐ”๋กœ๊ฐ€๊ธฐ
4๏ธโƒฃ Python/Problem Solving

[Python Algorithm] N๊ณผ M (1) BOJ #15649

by seolhee2750 2022. 2. 15.
๋ฌธ์ œ

https://www.acmicpc.net/problem/15649

 

15649๋ฒˆ: N๊ณผ M (1)

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

www.acmicpc.net

 

๋‚ด ๋ฌธ์ œ ํ’€์ด
n, m = map(int, input().split())
tmp = []

def dfs():
    if len(tmp) == m:
        print(' '.join(map(str, tmp)))
        return
    for i in range(1, n+1):
        if i not in tmp:
            tmp.append(i)
            dfs()
            tmp.pop()

dfs()

๐Ÿ‘‰ ๋ฐฑํŠธ๋ž˜ํ‚น ๋ฌธ์ œ !

  • ์ˆ˜์—ด์„ ๋งŒ๋“ค์–ด์ค„ tmp ๋ฆฌ์ŠคํŠธ๋ฅผ ๋งŒ๋“ค์–ด์„œ ๊ณ„์† ๊ฐฑ์‹ ํ•˜๋Š” ๋ฐฉ์‹์œผ๋กœ ํ’€์ดํ–ˆ๋‹ค.
  • dfs ํ•จ์ˆ˜์—์„œ tmp ๋ฆฌ์ŠคํŠธ์˜ ๊ธธ์ด๊ฐ€ m์ด ๋๋‹ค๋ฉด, ํ•˜๋‚˜์˜ ์ˆ˜์—ด์ด ์™„์„ฑ๋˜์—ˆ๋‹ค๋Š” ๋œป์ด๋ฏ€๋กœ
    join์„ ํ™œ์šฉํ•˜์—ฌ ์ˆ˜์—ด์„ ์ถœ๋ ฅํ•ด์ค€ ํ›„ ํ•จ์ˆ˜๋ฅผ ๋ฐ˜ํ™˜ํ–ˆ๋‹ค.
  • ์ˆ˜์—ด์ด ์™„์„ฑ๋˜๊ธฐ ์ „๊นŒ์ง€๋Š” for๋ฌธ์„ ์‚ฌ์šฉํ•˜์—ฌ 1๋ถ€ํ„ฐ n๊นŒ์ง€ ์ˆซ์ž๋ฅผ ํ•˜๋‚˜์”ฉ ์ถ”๊ฐ€ํ•ด์ฃผ์—ˆ๋‹ค.
    tmp ๋ฆฌ์ŠคํŠธ๋ฅผ ๊ฒ€์‚ฌํ•ด์„œ i๊ฐ€ ์กด์žฌํ•˜์ง€ ์•Š๋Š”๋‹ค๋ฉด i๋ฅผ ์ถ”๊ฐ€ํ•ด์ฃผ๊ณ , dfs ํ•จ์ˆ˜๋ฅผ ์žฌ๊ท€ํ˜ธ์ถœํ–ˆ๋‹ค.
    ๊ทธ๋ฆฌ๊ณ  ๋‹ค์‹œ ๋ฐฉ๊ธˆ ์ถ”๊ฐ€ํ•œ i๋ฅผ ์ œ๊ฑฐํ•ด์ฃผ์–ด์„œ, ๋‹ค์Œ ๋ฐ˜๋ณต์—์„œ๋Š” ๋˜ ์ƒˆ๋กœ์šด ์ˆ˜์—ด์„ ๋งŒ๋“ค ์ˆ˜ ์žˆ๊ฒŒ ํ–ˆ๋‹ค.

 

๐Ÿ’ก ํ”ผ๋“œ๋ฐฑ
  • ๋ฐฑํŠธ๋ž˜ํ‚น ๊ณต๋ถ€๋ฅผ ์œ„ํ•ด์„œ ํ’€์—ˆ๋Š”๋ฐ, ๊ฐ์ด ์˜ค๋Š” ๊ฒƒ ๊ฐ™๊ธฐ๋„,,!

๋Œ“๊ธ€