풀이
- 해당 문제는 백트래킹 문제로 현재 위치의 값을 변경 후
- 끝에 도달했다면 처리 후 돌아와서
- 초기 값인 0 으로 변경하는 문제이며
- 여기서 다른 문제와의 차별점으로는
- 이후의 값의 시작값이 이전의 값부터 시작한다는 것이 다르다.
- 그래서 아래와 같이 s ~ n+1 값 까지 반복하게 되는데
- 반복문으로부터 나온 i의 값을 다시 함수의 s로 보내서
- 해당 값부터 시작하도록 하여 문제를 해결
import sys
def find(s,cnt):
global n,m
if cnt == m:
print(*li)
return
for i in range(s,n+1):
li[cnt] = i
find(i,cnt+1)
li[cnt] = 0
input = sys.stdin.readline
n,m = map(int,input().split())
li = [0]*m
find(1,0)
'알고리즘' 카테고리의 다른 글
[백준, 파이썬, 24479번] 알고리즘 수업 - 깊이 우선 탐색 1 (0) | 2023.09.30 |
---|---|
[백준, 파이썬, 1284번] 집 주소 (0) | 2023.09.29 |
[백준, 파이썬, 7795번] 먹을 것인가 먹힐 것인가 (0) | 2023.09.24 |
[백준, 파이썬, 11478번] 서로 다른 부분 문자열의 개수 (0) | 2023.09.24 |
[백준, 파이썬, 1158번] 요세푸스 문제 (0) | 2023.09.23 |