[백준] 15649 N과 M(2) - 백트랙킹

jckim22·2023년 7월 31일
0

[ALGORITHM] STUDY (PS)

목록 보기
59/86

문제

문제 바로가기

N과M
위 문제에서 오름차순인 경우라는 조건이 추가 되었다.

풀이

import sys
input=sys.stdin.readline
c=list()
n,m=map(int,input().split())
visited=[0 for _ in range(n+1)]
def dfs(st,depth): 
    global n,m    
    for x in range(st,n+1):
        if visited[x]==0:            
            c.append(x)
            #방문체크
            visited[x]=1
            #깊이에 도달하면 
            if depth==m:
                print(' '.join(map(str,c)))                
            #아직 깊이가 아니라면 재귀
            else:                
                dfs(x+1,depth+1)
            #이걸 실행할 때 쯤이면 깊이에 도달한 직후거나 return하면서 조건을 회수하는 중임
            c.remove(x)#pop을 사용해도 상관 없음                     
            #방문해제
            visited[x]=0
dfs(1,1)  

풀이는 N과M과 거의 비슷하고
재귀를 호출할 때 인자로 위 노드의 +1을 주면 오름차순으로 정렬할 수 있다.

profile
개발/보안

0개의 댓글