728x90
15651번: N과 M (3)
한 줄에 하나씩 문제의 조건을 만족하는 수열을 출력한다. 중복되는 수열을 여러 번 출력하면 안되며, 각 수열은 공백으로 구분해서 출력해야 한다. 수열은 사전 순으로 증가하는 순서로 출력해
www.acmicpc.net
백트래킹 문제다.
이번에는 같은 수를 여러 번 골라도 된다.
# 15651번: N과 M(3)
n, m = map(int, input().split())
result = []
def backTracking(num):
if num == m:
print(*result)
return
for i in range(1, n+1):
result.append(i)
backTracking(num+1)
result.pop()
backTracking(0)
이전 문제에서 조건문을 빼버리면 된다.
또한, 백트래킹 외에도 파이썬에서 제공하는 product라는 함수를 사용해도 된다.
# 15651번: N과 M(3)
from itertools import product
n, m = map(int, input().split())
result = list(product(range(1, n+1), repeat = m))
for res in result:
print(*res)
728x90
'알고리즘 > 백준' 카테고리의 다른 글
15654번: N과 M(5) (0) | 2024.04.04 |
---|---|
15652번: N과 M(4) (0) | 2024.04.04 |
15650번: N과 M(2) (0) | 2024.04.01 |
15649번: N과 M(1) (0) | 2024.04.01 |
14503번: 로봇 청소기 (1) | 2024.03.18 |