https://www.acmicpc.net/problem/15652
15652번: N과 M (4)
한 줄에 하나씩 문제의 조건을 만족하는 수열을 출력한다. 중복되는 수열을 여러 번 출력하면 안되며, 각 수열은 공백으로 구분해서 출력해야 한다. 수열은 사전 순으로 증가하는 순서로 출력해
www.acmicpc.net
아이디어
반복문의 범위를 마지막으로 추가된 값부터 N까지로 하고, 마지막으로 추가된 값의 visited를 0으로 변경하면 된다.
전체 코드
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
start = nums[-1] if nums else 1
visited[start] = 0
for idx in range(start, N + 1):
if visited[idx] == 0:
visited[idx] = 1
bt(nums+[idx], visited)
visited[idx] = 0
bt([], visited)
'Coding Test > Python' 카테고리의 다른 글
[백준/구현] 20055번: 컨베이어 벨트 위의 로봇(골드5, python) (1) | 2024.01.29 |
---|---|
[백준/DP] 9095번: 1, 2, 3 더하기 (실버3, python) (0) | 2024.01.29 |
[백준/백트래킹] 15651번: N과 M(3) (실버3, python) (1) | 2024.01.29 |
[백준/백트래킹] 15650번: N과 M(2) (실버3, python) (0) | 2024.01.29 |
[백준/백트래킹] 15649번: N과 M(1) (실버3, python) (1) | 2024.01.29 |