https://www.acmicpc.net/problem/15652
풀이
def dfs(x): # 앞의 숫자와 비교해야하므로 파라미터로 넘겨줌
if len(s)==m: # s의 길이가 m과 같으면 답 출력
print(*s)
return
for i in range(x,n+1): # 파라미터로 받은 숫자보다 같거나 커야함
s.append(i) # 수를 더해주고
dfs(i) # 더한 수를 파라미터로 가지고 dfs
s.pop() # 원 상태로 돌리기 위해 pop
n,m = map(int,input().split())
s = [] #답 리스트
dfs(1)
- 현재 dfs for문에서 넣은 숫자보다 같거나 커야한다. 파라미터로 넘겨주어서 체크해준다.
- s의 길이가 m과 같으면 답 출력
-
파라미터로 받은 숫자보다 같거나 커야하기 때문에 x이상 n이하
-
수를 더해주고 더한 수를 파라미터로 가지고 dfs 호출
-
원 상태로 돌리기 위해 pop
'코딩테스트 > Python' 카테고리의 다른 글
[Python] 백준 #10828 - 스택 (0) | 2021.12.01 |
---|---|
[Python] 백준 #5086 - 배수와 약수 (0) | 2021.12.01 |
[Python] 백준 #15651 - N과 M (3) (0) | 2021.12.01 |
[Python] 백준 #15650 - N과 M (2) (0) | 2021.12.01 |
[Python] 백준 #10799 - 쇠막대기 (0) | 2021.12.01 |