728x90
반응형
Silver III
# 15651 N과 M (3)
링크 : https://www.acmicpc.net/problem/15651
풀이
N, M = map(int, input().split())
def dfs(depth, seq):
if depth == M:
print(' '.join(list(map(str, seq))))
return
for i in range(1, N+1):
seq.append(i)
dfs(depth+1, seq)
seq.pop()
dfs(0, [])
풀이 방법
- 15649 N과 M (1) 문제보다 오히려 쉬운 문제였다. 다른점이 있다면 if 조건문을 삭제해주었을 뿐..
- dfs(depth+1, seq) 함수가 return 되었을 때, seq.pop()이 발동되는 과정에서 백트래킹 구조 이해도를 조금 더 높일 수 있었다.
풀이 renewal
N, M = map(int, input().split())
def dfs(start, seq):
if len(seq) == M:
print(' '.join(list(map(str, seq))))
return
for i in range(1, N+1):
seq.append(i)
dfs(i+1, seq)
seq.pop()
dfs(1, [])
- 비슷한 유형을 풀면서 다음과 같이 푸는게 더 이해가 잘 되는 것 같아 정리해본다.
'Algorithm Study > Python' 카테고리의 다른 글
[백준 파이썬] # 15649 N과 M (2) (0) | 2022.01.21 |
---|---|
[백준 파이썬] # 15651 N과 M (4) (0) | 2022.01.21 |
[백준 파이썬] # 15649 N과 M (1) (0) | 2022.01.19 |
[백준 파이썬] # 10809 알파벳 찾기 (0) | 2022.01.16 |
[백준 파이썬] # 2675 문자열 반복 (0) | 2022.01.16 |