15651๋ฒ: N๊ณผ M (3)
ํ ์ค์ ํ๋์ฉ ๋ฌธ์ ์ ์กฐ๊ฑด์ ๋ง์กฑํ๋ ์์ด์ ์ถ๋ ฅํ๋ค. ์ค๋ณต๋๋ ์์ด์ ์ฌ๋ฌ ๋ฒ ์ถ๋ ฅํ๋ฉด ์๋๋ฉฐ, ๊ฐ ์์ด์ ๊ณต๋ฐฑ์ผ๋ก ๊ตฌ๋ถํด์ ์ถ๋ ฅํด์ผ ํ๋ค. ์์ด์ ์ฌ์ ์์ผ๋ก ์ฆ๊ฐํ๋ ์์๋ก ์ถ๋ ฅํด
www.acmicpc.net
1 ~ N ์ค ์ค๋ณต ์์ด M๊ฐ์ ์๋ฅผ ๊ณ ๋ฅด๋ ๊ฒฝ์ฐ๋ฅผ ๋ชจ๋ ์ถ๋ ฅํ๋ ๋ฌธ์
(1) ๋ฆฌ์คํธ์ ๋ฏธ๋ฆฌ m๊ฐ๋งํผ์ 0์ ์ ์ฅํ ํ index ์์๋๋ก ์ฑ์๋ฃ์ผ๋ฉฐ ์ถ๋ ฅํ๋ ๋ฐฉ๋ฒ
def sequence( seq, n, m, index ) :
1. i๊ฐ 1 ~ N๊น์ง ๋ฐ๋ณต
2. ๋ฆฌ์คํธ seq[index]์ i ๋์
3. index+1 == m์ด๋ฉด seq๋ฅผ ์ถ๋ ฅ
4. ์๋๋ฉด sequence( seq, n, m, index+1 ) ํธ์ถ
# 15651-1.py
def sequence(seq, n, m, index):
for i in range(1, n+1):
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[index]์ i ์ถ๊ฐ
4. sequence( seq, n, m ) ํธ์ถ => (1)๊ณผ ๋ค๋ฅด๊ฒ seq์ ๊ธธ์ด๋ก ํ๋จํ๊ธฐ ๋๋ฌธ์ index๋ฅผ ์ ๋ฌํ์ง ์์๋ ๋จ
5. ๋ฆฌ์คํธ seq ๋ง์ง๋ง ์์ ์ญ์
# 15651-2.py
def sequence(seq, n, m):
if len(seq) == m:
print(' '.join(map(str, seq)))
return
for i in range(1, n+1):
seq.append(i)
sequence(seq, n, m)
seq.pop()
n, m = map(int, input().split())
nm = []
sequence(nm, n, m)
(3) itertools ๋ชจ๋์ productํจ์๋ฅผ ์ด์ฉํ๋ ๋ฐฉ๋ฒ
# 15651-3.py
import itertools
n, m = map(int, input().split())
nm = [str(i) for i in range(1, n+1)]
a = list(itertools.product(nm, repeat=m))
for i in a:
print(' '.join(i))
์๋ถํฐ (3) (2) (1) ๋ฒ ์ฝ๋
(3)๋ฒ์ด ์ ์ผ ๋น ๋ฅผ๊ฑฐ๋ผ๊ณ ์๊ฐํ๊ธด ํ๋๋ฐ ์ด๋ฒ์๋ ์ (2)๋ฒ์ด (1)๋ฒ๋ณด๋ค ๋๋ฆฐ๊ฑธ๊น
pop append๊ฐ ์๊ฐ์ด ์ข ๊ฑธ๋ฆฌ๋?