https://www.acmicpc.net/problem/15651
15651번: N과 M (3)
한 줄에 하나씩 문제의 조건을 만족하는 수열을 출력한다. 중복되는 수열을 여러 번 출력하면 안되며, 각 수열은 공백으로 구분해서 출력해야 한다. 수열은 사전 순으로 증가하는 순서로 출력해
www.acmicpc.net
아이디어
매 bfs 호출 시에 새로운 visited 리스트를 선언해주었다.
전체 코드
N, M = map(int, input().split())
visited = [0] * (N + 1)
def bt(nums, visited):
if len(nums) == M:
for num in nums:
print(num, end=" ")
print()
return
for idx in range(1, N + 1):
if visited[idx] == 0:
visited[idx] = 1
bt(nums+[idx], [0] * (N + 1))
visited[idx] = 0
bt([], visited)'Coding Test > Python' 카테고리의 다른 글
| [백준/DP] 9095번: 1, 2, 3 더하기 (실버3, python) (0) | 2024.01.29 |
|---|---|
| [백준/백트래킹] 15652번: N과 M(4) (실버3, python) (0) | 2024.01.29 |
| [백준/백트래킹] 15650번: N과 M(2) (실버3, python) (0) | 2024.01.29 |
| [백준/백트래킹] 15649번: N과 M(1) (실버3, python) (1) | 2024.01.29 |
| [백준/dp] 2579번: 계단 오르기 (실버3, python) (0) | 2024.01.28 |