1 ~ N ์ค ์ค๋ณต ์์ด M๊ฐ์ ์๋ฅผ ๊ณ ๋ฅด๋ ๊ฒฝ์ฐ๋ฅผ ๋ชจ๋ ์ถ๋ ฅํ๋ ๋ฌธ์
(1) ๋ฆฌ์คํธ์ ๋ฏธ๋ฆฌ m๊ฐ๋งํผ์ 0์ ์ ์ฅํ ํ index ์์๋๋ก ์ฑ์๋ฃ์ผ๋ฉฐ ์ถ๋ ฅํ๋ ๋ฐฉ๋ฒ
def sequence( seq, n, m, index ) :
1. i๊ฐ 1 ~ N๊น์ง ๋ฐ๋ณต
2. ๋ฆฌ์คํธ seq[:index]์ ๋์ ํ๋ ค๋ i ๊ฐ ์๋์ง ํ์ธํ์ฌ ์์ผ๋ฉด continue => ์ค๋ณต ์์ด m๊ฐ์ ์๋ฅผ ๊ณ ๋ฅด๊ธฐ ๋๋ฌธ
3. ๋ฆฌ์คํธ seq[index]์ i ๋์
4. index+1 == m์ด๋ฉด seq๋ฅผ ์ถ๋ ฅ
5. ์๋๋ฉด sequence( seq, n, m, index+1 ) ํธ์ถ
# 15649-1.py
def sequence(seq, n, m, index):
for i in range(1, n+1):
if i in seq[:index]:
continue
seq[index] = i
if index + 1 == m:
print(' '.join(map(str, seq)))
else:
sequence(seq, n, m, index+1)
n, m = map(int, input().split())
nm = [0 for _ in range(m)]
sequence(nm, n, m, 0)
(2) ๋ฆฌ์คํธ์ ํ๋์ฉ ์ซ์๋ฅผ ์ถ๊ฐํ๋ฉฐ ๊ธธ์ด๊ฐ m์ด ๋๋ฉด ์ถ๋ ฅํ๋ ๋ฐฉ๋ฒ
def sequence( seq, n, m ) :
1. ๋ฆฌ์คํธ seq์ ๊ธธ์ด๊ฐ m์ธ์ง ํ์ธํ์ฌ m์ผ๋ seq ์ถ๋ ฅ
2. i๊ฐ 1 ~ 1๊น์ง ๋ฐ๋ณต
3. ๋ฆฌ์คํธ seq์ ๋์ ํ๋ ค๋ i ๊ฐ ์๋์ง ํ์ธํ์ฌ ์์ผ๋ฉด continue => ์ค๋ณต ์์ด m๊ฐ์ ์๋ฅผ ๊ณ ๋ฅด๊ธฐ ๋๋ฌธ
4. ๋ฆฌ์คํธ seq[index]์ i ์ถ๊ฐ
5. sequence( seq, n, m ) ํธ์ถ => (1)๊ณผ ๋ค๋ฅด๊ฒ seq์ ๊ธธ์ด๋ก ํ๋จํ๊ธฐ ๋๋ฌธ์ index๋ฅผ ์ ๋ฌํ์ง ์์๋ ๋จ
6. ๋ฆฌ์คํธ seq ๋ง์ง๋ง ์์ ์ญ์
# 15649-2.py
def sequence(seq, n, m):
if len(seq) == m:
print(' '.join(map(str, seq)))
for i in range(1, n+1):
if i in seq:
continue
seq.append(i)
sequence(seq, n, m)
seq.pop()
n, m = map(int, input().split())
nm = []
sequence(nm, n, m)
(3) itertools ๋ชจ๋์ permutations ํจ์๋ฅผ ์ด์ฉํ๋ ๋ฐฉ๋ฒ
# 15649-3.py
import itertools
n, m = map(int, input().split())
nm = [str(i) for i in range(1, n+1)]
a = list(itertools.permutations(nm, m))
for i in a:
print(' '.join(i))
์๋ถํฐ ์์๋๋ก (3) (2) (1) ๋ฒ ์ฝ๋
ํ์คํ ๋ชจ๋ ํจ์๋ฅผ ์ด์ฉํ๋๊ฒ ๋น ๋ฅด๋ค..