본문 바로가기
728x90
반응형

BFS4

[백준 골드5] 경쟁적 전염 (#18405, 그래프 탐색 문제) (문제 링크) 문제NxN 크기의 시험관이 있다. 시험관은 1x1 크기의 칸으로 나누어지며, 특정한 위치에는 바이러스가 존재할 수 있다. 모든 바이러스는 1번부터 K번까지의 바이러스 종류 중 하나에 속한다.시험관에 존재하는 모든 바이러스는 1초마다 상, 하, 좌, 우의 방향으로 증식해 나간다. 단, 매 초마다 번호가 낮은 종류의 바이러스부터 먼저 증식한다. 또한 증식 과정에서 특정한 칸에 이미 어떠한 바이러스가 존재한다면, 그 곳에는 다른 바이러스가 들어갈 수 없다.시험관의 크기와 바이러스의 위치 정보가 주어졌을 때, S초가 지난 후에 (X,Y)에 존재하는 바이러스의 종류를 출력하는 프로그램을 작성하시오. 만약 S초가 지난 후에 해당 위치에 바이러스가 존재하지 않는다면, 0을 출력한다. 이 때 X와 Y는 .. 2025. 2. 12.
[백준 실버2] 특정 거리의 도시 찾기 (#18352, 그래프 탐색 문제) (문제 링크) 문제어떤 나라에는 1번부터 N번까지의 도시와 M개의 단방향 도로가 존재한다. 모든 도로의 거리는 1이다.이 때 특정한 도시 X로부터 출발하여 도달할 수 있는 모든 도시 중에서, 최단 거리가 정확히 K인 모든 도시들의 번호를 출력하는 프로그램을 작성하시오. 또한 출발 도시 X에서 출발 도시 X로 가는 최단 거리는 항상 0이라고 가정한다.예를 들어 N=4, K=2, X=1일 때 다음과 같이 그래프가 구성되어 있다고 가정하자.이 때 1번 도시에서 출발하여 도달할 수 있는 도시 중에서, 최단 거리가 2인 도시는 4번 도시 뿐이다.  2번과 3번 도시의 경우, 최단 거리가 1이기 때문에 출력하지 않는다. 입력 조건첫째 줄에 도시의 개수 N, 도로의 개수 M, 거리 정보 K, 출발 도시의 번호 X가 .. 2025. 2. 11.
그래프 탐색하기 위한 대표적인 알고리즘 DFS/BFS - BFS란? 1. BFS (Breadth First Search)BFS는 '너비 우선 탐색' 알고리즘으로, 가까운 노드부터 탐색하는 방식이다.DFS가 깊이 우선으로 탐색하는 것과 달리, BFS는 탐색 시작 노드에서 가까운 노드를 먼저 방문하고 점점 멀리 있는 노드를 방문한다.  BFS의 구현에서는 선입선출(FIFO) 구조인 큐(Queue)를 사용한다. 인접한 노드를 큐에 삽입하면, 먼저 들어온 노드가 먼저 처리되므로 가까운 노드부터 탐색하게 된다.   탐색 시작 노드를 큐에 삽입하고 방문 처리를 한다.큐에서 노드를 꺼내고, 해당 노드의 인접 노드 중에서 방문하지 않은 노드를 모두 큐에 삽입하고 방문 처리를 한다. 2번의 과정을 더 이상 수행할 수 없을 때까지 반복한다.  아래 그래프에서 노드 1을 시작 노드로 BFS.. 2025. 2. 10.
그래프 탐색하기 위한 대표적인 알고리즘 DFS/BFS - 사전 단계 (스택,큐,재귀함수 이해) 1. 탐색 (Search)탐색은 많은 양의 데이터 중에서 원하는 데이터를 찾는 과정을 의미한다. 대표적인 탐색 알고리즘으로 DFS(Depth First Search)와 BFS(Breadth First Search)가 있으며, 이를 이해하려면 스택(Stack)과 큐(Queue) 자료구조를 먼저 알아야 한다. 2. 스택 (Stack)스택은 접시 쌓기에 비유할 수 있다. - 접시를 아래에서 위로 차곡차곡 쌓고,- 가장 위에 있는 접시부터 치워야 한다.이 구조를 선입후출(First In Last Out, FILO) 구조라고 한다. # 스택 구현 예제stack = []# 삽입(5)-삽입(2)-삽입(3)-삽입(7)-삭제()-삽입(1)-삭제()stack.append(5)stack.append(2)stack.appen.. 2025. 2. 10.
728x90
반응형