Algorithm

[Python] ๋ฐฑ์ค€ 15649 - N๊ณผ M

๐ŸฅญMango 2021. 1. 30. 00:31

๋ฌธ์ œ

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

  • 1๋ถ€ํ„ฐ N๊นŒ์ง€ ์ž์—ฐ์ˆ˜ ์ค‘์—์„œ ์ค‘๋ณต ์—†์ด M๊ฐœ๋ฅผ ๊ณ ๋ฅธ ์ˆ˜์—ด

์ž…๋ ฅ

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

 

์ถœ๋ ฅ

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

์ˆ˜์—ด์€ ์‚ฌ์ „ ์ˆœ์œผ๋กœ ์ฆ๊ฐ€ํ•˜๋Š” ์ˆœ์„œ๋กœ ์ถœ๋ ฅํ•ด์•ผ ํ•œ๋‹ค.


์ •๋‹ต

def dfs(L): 
    if L==m:
        for j in range(L):
            print(res[j], end=' ')
        print()
    else:
        for i in range(1, n+1): #1๋ถ€ํ„ฐ n๊นŒ์ง€ 
            if ch[i] == 0: # i๊ฐ€ 0์ด ์•„๋‹๋•Œ
                ch[i] = 1 # 1๋กœ ๋ฐ”๊ฟ”์ค€๋‹ค.
                res[L] = i #res[L]์— i๋ฅผ ๋„ฃ์–ด์ค€๋‹ค.
                dfs(L + 1) #๋ ˆ๋ฒจ์ด ํ•˜๋‚˜ ์ฆ๊ฐ€
                ch[i] = 0 # ๋‹ค์‹œ ๋ฐ”๊ฟ”์ค€๋‹ค.


n, m = map(int, input().split())
res = [0] * n #๊ฒฐ๊ณผ ์ถœ๋ ฅ
ch = [0] * (n + 1) #์ฒดํฌ๋ฆฌ์ŠคํŠธ
dfs(0)

 

.

.

.