본문 바로가기

backtracking2

✅ BOJ 1987 - DFS, Backtracking, Bitmasking BOJ 1987 알파벳문제 핵심은 같은 알파벳 두 번 못 밟음. 시작 칸 포함해서 최대 몇 칸까지 갈 수 있냐 물어봄접근DFS+백트래킹. 좌표 방문 말고 알파벳 중복만 막으면 됨. 비트마스크로 처리. A~Z니까 26비트면 됨비트마스크visited | (1 DFS 흐름지금 칸에서 상하좌우 돌려서 안 갔으면 depth+1 해서 재귀. visited는 새로 넘기니까 원복 필요 없음시작(0,0) 칸 알파벳으로 시작, depth=1부터 시작하면 됨끝 #dfs,bitmasking,backtrackingimport sysinput=sys.stdin.readlinedef dfs(y,x,visited,depth): directions=[(1,0),(0,-1),(-1,0),(0,1)] global answer .. 2025. 7. 4.
✅ BOJ 15686 - 조합 백트래킹 백준 15686 치킨 배달 - 조합 완전탐색문제 핵심N×N 격자에 집(1), 치킨집(2) 있음치킨 거리: 각 집에서 가장 가까운 치킨집까지의 맨해튼 거리도시 치킨 거리: 모든 집의 치킨 거리 합치킨집 중 M개만 남기고 나머지 폐업목표: 도시 치킨 거리 최소화개념 정리잘못된 접근법"거리 멀어서 치킨집 먼저 제거하면 됨" → 아님. 멀어도 특정 집에게는 가장 가까운 치킨집일 수 있음"치킨집 기준으로 가까운 집 찾기" → 아님. 집 기준으로 가장 가까운 치킨집 찾는 문제임올바른 접근조합 + 완전탐색치킨집 최대 13개 → 13CM 경우의 수 매우 적음모든 M개 조합 다 해보면 됨구현1. 맨해튼 거리distance = abs(x1 - x2) + abs(y1 - y2)BFS/DFS 같은 거 쓸 필요 없음. 그냥 좌.. 2025. 7. 2.
728x90