문제 링크
풀이
n, m = map(int, input().split())
def nm(n, m, seq=[]):
if len(seq) == m:
print(" ".join(seq))
else:
for i in range(1, n+1):
nm(n, m, seq+[str(i)])
nm(n, m)
재귀함수를 통해 1부터 n까지의 수를 차례로 순회하면서 하나씩 seq에 추가하여 그 길이가 m만큼 되었을 때마다 출력하도록 하였다.
itertools모듈의 product 메소드를 사용하여 더 쉽게 해결할 수 있다.
itertools.product(*iterables, repeat=1)는 iterable들의 곱집합을 튜플로 반환하며, 만약 하나의 iterable 내에서 곱집합을 얻으려면 몇 번 반복할 것인지 repeat를 지정하면 된다.
import itertools
n, m = map(int, input().split())
lst = map(str, [str(x) for x in range(1, n+1)])
print("\n".join(map(" ".join, itertools.product(lst, repeat=m))))
'연습장 > 백준(BOJ) 문제풀이' 카테고리의 다른 글
[백준 15652] N과 M (4) with Python (0) | 2021.05.12 |
---|---|
[백준 3986] 좋은 단어 with Node.js (0) | 2021.05.10 |
[백준 9656] 돌 게임 2 with Node.js (0) | 2021.05.07 |
[백준 10799] 쇠막대기 with Python (0) | 2021.05.07 |
[백준 2331] 반복수열 with Node.js (0) | 2021.05.06 |