알고리즘(백준)/백트래킹
[알고리즘/백트래킹] 15651번 : N과 M (3) - python
되다
2024. 2. 6. 15:40
링크 : https://www.acmicpc.net/problem/15651
15651번: N과 M (3)
한 줄에 하나씩 문제의 조건을 만족하는 수열을 출력한다. 중복되는 수열을 여러 번 출력하면 안되며, 각 수열은 공백으로 구분해서 출력해야 한다. 수열은 사전 순으로 증가하는 순서로 출력해
www.acmicpc.net
- 문제
- 소요시간: 3분 6초
- 설계하기(접근방법)
1. 입력받기
n, m 을 입력받는다
2. 구현하기
백트래킹의 변형이지만 실제로는 재귀함수 문제같다
visited를 코드에는 선언했지만 필요없었다
1 ~ n까지 차례때로 선택하고, 중복을 허락한다
즉 visited를 검사할 필요가 없다
3. 출력하기
ans를 출력한다
- 코드(출력)
n , m = map(int, input().split())
ans = []
visited = [0 for _ in range(n + 1)]
def dfs(cnt, lst):
if cnt == m:
ans.append(lst)
else:
for i in range(1, n + 1):
dfs(cnt + 1, lst + [i])
dfs(0, [])
for i in ans:
print(*i)
- 얻어갈 부분
1. 요구 사항, 종료조건에 맞게 코드를 구현하자