BFS 4

[BOJ][C++] 백준 2606번: 바이러스

문제https://www.acmicpc.net/problem/2606 문제 이해컴퓨터가 바이러스에 걸리면, 그 컴퓨터와 네트워크 상에서 서로 연결되어 있는 컴퓨터는 모두 바이러스에 걸린다.1번 컴퓨터를 통해 바이러스에 걸리게 되는 컴퓨터의 수 출력 문제 풀이 🔍 접근 네트워크 상에서 연결되어 있는 컴퓨터들을 그래프로 나타낼 수 있다.1번 컴퓨터와 연결된 모든 컴퓨터를 탐색한다. 💡 DFS & BFS인접 행렬에 네트워크 상에서 서로 연결되어 있는 컴퓨터의 정보를 저장한다.1번 컴퓨터부터 탐색을 시작해서, 1번 컴퓨터와 연결된 모든 컴퓨터에 방문한다.방문할 때마다 방문 표시를 하고 카운트(바이러스에 걸리는 컴퓨터의 수)를 증가시킨다. 코드1️⃣ DFS#include #include using namesp..

[BOJ][C++] 백준 1303번: 전쟁 - 전투

문제https://www.acmicpc.net/problem/1303 문제 이해N × M 전쟁터에서 우리 병사(W)의 위력의 합과 적국의 병사(B)의 위력의 합을 구한다.N명이 뭉쳐있을 때 N²의 위력을 낼 수 있다. 문제 풀이💡 DFS & BFS첫 번째 칸부터 dr, dc 배열을 이용해서 같은 문자('W' / 'B')가 있는 곳을 상하좌우로 탐색한다.이미 방문한 곳은 탐색하지 않는다.탐색하는 곳은 방문 표기하고, 해당 병사 수 카운트를 증가시킨다.탐색을 종료한 후 뭉쳐있는 병사의 위력을 저장한다.병사의 위력을 합한 값을 각각 출력한다. 코드1️⃣ DFS#include #include #include using namespace std;int n, m, cnt;char color;vector> boar..

[BOJ][C++] 백준 1260번: DFS와 BFS

문제https://www.acmicpc.net/problem/1260 문제 이해그래프를 DFS로 탐색한 결과와 BFS로 탐색한 결과 출력 문제 풀이주어진 간선과 두 정점의 번호를 이용해 인접 행렬을 저장한다. 💡 DFS현재 정점과 연결된 정점을 순서대로 재귀 탐색한다.시작 V → V와 연결된 정점 A → A와 연결된 정점 B → B와 연결된 정점 C ..인접 행렬 adj[cur][1 ~ n] 순회. 연결되어 있으면 dfs(next)dfs 탐색하면서 방문 표시 & 출력 배열에 삽입하기이미 방문한 곳이면 return💡 BFS현재 정점과 연결된 정점을 모두 큐에 삽입하고 큐에서 정점을 꺼내면서 탐색한다.시작 V → V와 연결된 정점 A → V와 연결된 정점 B → …A와 연결된 정점 A’ → A’와 연결된..

[BOJ][C++] 백준 2667번: 단지번호붙이기

문제https://www.acmicpc.net/problem/2667 문제 이해N × N 크기의 정사각형 지도에서 1은 집이 있는 곳을, 0은 집이 없는 곳을 나타낸다.집이 있는 곳(1)끼리 상하좌우로 연결시켜 단지를 만든다.총 단지수와 단지내 집의 수를 오름차순으로 출력한다. 문제 풀이 🔍 접근 집이 존재하는 곳을 기준으로 그 집의 상하좌우에 또 다른 집이 존재하는지를 판단하는 그래프 탐색 문제로 볼 수 있다.지도를 순회하면서 '1'이 나왔을 때 모든 인접 정점을 방문하여 연결된 집의 개수를 구한다. 🔨 구현 BFS와 DFS를 이용하여 풀 수 있다.방문 표기는 visited 배열을 만드는 대신 지도에서 방문한 곳을 '0'으로 바꾸어 표기할 수 있다.집이 있는 곳에서 dr, dc 배열을 이용해서 상..