BFS(12)
-
2.1 완전 탐색 (BruteForce)
1. 완전탐색이란? 완전탐색은 가능한 모든 경우에 대해서 일일이 수행해보는 알고리즘을 말합니다. 이 방법은 무식하게 한다는 의미로 "Brute Force"라고도 부르며, 직관적이어서 이해하기 쉽고 문제의 정확한 결과값을 얻어낼 수 있는 가장 확실하며 기초적인 방법입니다. 예를 들어, 4자리의 암호로 구성된 자물쇠를 풀려고 시도한다고 생각해봅시다. 이 자물쇠가 고장난 것이 아니라면, 반드시 해결할 수 있는 가장 확실한 방법은 0000 ~ 9999까지 모두 시도해보는 것입니다. (최대 10,000번의 시도로 해결 가능) 하지만, Computer Science에서 문제 해결 알고리즘을 사용할 때는, 기본적으로 2가지 규칙을 적용합니다. 1. 사용된 알고리즘이 적절한가? ( 문제를 해결할 수 있는가 ) 2. 효..
2023.09.01 -
단지번호붙이기 실버 1 (백준, BFS)
from collections import deque def bfs(x,y): q = deque() q.append((x,y)) graph[x][y] = 0 cnt = 1 while q: x, y = q.popleft() for dx, dy in d: X,Y = x+dx, y+dy if 0
2023.02.10 -
숨박꼭질 4 - 골드 4 (백준, BFS)
from collections import deque N, K = map(int, input().split()) road = [0] * 100001 move = [0] * 100001 def path(x): arr = [] temp = x for _ in range(road[x]+1): arr.append(temp) temp = move[temp] print(' '.join(map(str, arr[::-1]))) def bfs(): q = deque() q.append(N) while q: x = q.popleft() if x == K: print(road[x]) path(x) break for dx in (x*2, x+1, x-1): if 0
2023.01.20 -
숨박꼭질 3 - 골드 5 (백준, BFS)
from collections import deque def bfs(start): q = deque() q.append(start) arr[start] = 0 while q: x = q.popleft() if x == K: return arr[x] for nx in (x*2, x+1, x-1): if 0
2023.01.19 -
유기농 배추 - 실버 2 (백준, DFS/BFS) BFS만
import sys from collections import deque input = sys.stdin.readline d = [(0,1),(0,-1),(1,0),(-1,0)] def bfs(y, x): q = deque() q.append((y,x)) maps[y][x] = 0 while q: y,x = q.popleft() for dx, dy in d: Y, X = y+dy, x+dx if 0
2023.01.18 -
숨박꼭질 2 - 골드 4 (백준, BFS)
def bfs(start): global result q = deque() q.append(start) arr[start] = 0 while q: x = q.popleft() if x == K: result += 1 continue for nx in (x*2, x+1, x-1): # 최소시간이 arr[K]에 이미 있는 경우에는 같을 때도 # q.append해서 result가 증가될 수 있도록 if 0
2023.01.13