Backtracking 13

[Backtracking] 백트래킹 알고리즘의 정의

DFS(깊이 우선 탐색) 복습 DFS는 가능한 모든 경로(후보)를 탐색합니다. 따라서, 불필요할 것 같은 경로를 사전에 차단하거나 하는 등의 행동이 없으므로 경우의 수를 줄이지 못합니다. 따라서 N! 가지의 경우의 수를 가진 문제는 DFS로 처리가 불가능할 것입니다. Backtracking 알고리즘이란 ? '백트래킹'이란 현재 상태에서 가능한 모든 경로를 따라 들어가 탐색하다가 원하는 값과 불일치하는 부분이 발생하면 더 이상 탐색을 진행하지 않고 전 단계로 돌아가는, 즉 이름 그대로 방금 왔던 길을 되짚어가는, Backtrack 하는 알고리즘이다. 해를 찾는 도중 해가 아니어서 막히면, 되돌아가서 다시 해를 찾아가는 기법을 말합니다. 깊이 우선 탐색에서는 한 루트를 끝까지 들여다보고 정답이 없을 시 처음..

[백준 15684번] 사다리 조작

15684번: 사다리 조작 사다리 게임은 N개의 세로선과 M개의 가로선으로 이루어져 있다. 인접한 세로선 사이에는 가로선을 놓을 수 있는데, 각각의 세로선마다 가로선을 놓을 수 있는 위치의 개수는 H이고, 모든 세로선 www.acmicpc.net n, m, h = map(int,input().split()) answer = 4 def check(): # i번에서 시작한 세로선이 i번에서 끝나는지 확인하는 함수 for i in range(n): temp = i # 이동하는 세로선 위치 for j in range(h): if ladder[j][temp] == 1: # 오른쪽이 1인 경우(오른쪽으로 가로선이 쳐져있는 경우) temp += 1 elif temp > 0 and ladder[j][temp-1] ==..

Algorithm/DFS 2023.08.21

[백준 1987번] 알파벳 (파이썬 시간초과 해결)

import sys input = sys.stdin.readline sys.setrecursionlimit(10**5) from collections import deque # 세로와 가로 칸 개수 r, c = map(int,input().split()) # 지나갔던 알파벳 정보 배열 alpha = [0]*26 result = 0 count_list = [[1]*c for _ in range(r)] visited = [[False]*c for _ in range(r)] area = [[0]*c for _ in range(r)] for i in range(r): area[i] = (list(input())) def dfs(x,y): global result if x = r or y < 0..

Algorithm/DFS 2023.02.16