Python tutor

    백준 15650번 : N과M(2)

    백준 15650번 : N과M(2)

    ◎백트래킹 문제 ◎앞에 순열문제와 다른점 : 중복 x def dfs(cnt): if cnt == M: for i in range(len(arr)): print(arr[i], end=' ') print() return for i in range(N): if visit[i]: continue visit[i] = True arr.append(num_list[i]) dfs(cnt+1) arr.pop() #여기까진 순열과 동일 #순열과 다른점은 밑에 코드 #원래는 visit[i] = Flase로 짰었음 # 근데 밑에는 i보다 하나 큰 범위부터 False를 만들어줌 # i전의 visit은 True상태로 고정! #append되지 않음 for j in range(i+1, N): visit[i] = False N, M ..

    백준 15649: N과M(1)

    백준 15649: N과M(1)

    ◎백트래킹 문제 ◎재귀를 이용하여 문제 풀음 def dfs(cnt): #cnt가 M이 되면 arr출력하는 함수 만들기 #조건 생성 : cnt가 M과 같아질 때 arr출력 if cnt == M: for i in range(len(arr)): print(arr[i], end=' ') return #visit 추적 for i in range(N): #visit이 True일 경우에는 건너뛰고 계속 진행한다 if visit[i]: continue #방문한 곳은 True로 변경 visit[i] = True #i번째 idx arr에 append해줌 arr.append(lst[i]) #재귀(stack형식으로 쌓인다는 점 기억) #큰 깨달음 : 함수 자체가 stack에 쌓임 dfs(cnt+1) arr.pop() prin..