1번 문제.
https://www.acmicpc.net/problem/15651
-> N과 M(3)
import sys
n, m = map(int, sys.stdin.readline().rstrip().split())
# 값들을 담아줄 리스트
list = []
def dfs():
# 리스트의 길이가 m인 숫자들을 출력한다.
if len(list) == m:
# 리스트 값이 '1', '2' ... 이런 형식이므로 join을 이용해 1 2 형식으로 바꿔줌
print(' '.join(map(str, list)))
return
# 1부터 n까지의 숫자들로 반복문 실행
for i in range(1, n+1):
# 리스트에 i값을 넣어주고
list.append(i)
# 리스트 안의 숫자들을 출력해줌
dfs()
# 출력된 값들은 제거한다.
list.pop()
dfs()
=======================================================
2번 문제.
https://www.acmicpc.net/problem/15652
-> N과 M(4)
import sys
n, m = map(int, sys.stdin.readline().rstrip().split())
# 값들을 담아줄 리스트
list = []
# 시작 값의 변화를 통해 비내림순열을 만든다.
def dfs(start):
# 리스트의 길이가 m인 숫자들을 출력한다.
if len(list) == m:
# 리스트 값이 '1', '2' ... 이런 형식이므로 join을 이용해 1 2 형식으로 바꿔줌
print(' '.join(map(str, list)))
return
# start 값부터 n까지의 숫자들로 반복문 실행
for i in range(start, n+1):
# 리스트에 값 넣기
list.append(i)
# 함수에 숫자를 하나씩 올리면서 값을 출력
dfs(i)
# 출력된 값은 제거
list.pop()
# 1부터 시작
dfs(1)
=======================================================
백트래킹을 사용해서 문제를 푸는건 정말 많이 헷갈린다... 되게 단순한 것도.ㅎ