문제 링크 https://www.acmicpc.net/problem/7576 7576번: 토마토 첫 줄에는 상자의 크기를 나타내는 두 정수 M,N이 주어진다. M은 상자의 가로 칸의 수, N은 상자의 세로 칸의 수를 나타낸다. 단, 2 ≤ M,N ≤ 1,000 이다. 둘째 줄부터는 하나의 상자에 저장된 토마토 www.acmicpc.net 풀이 BFS를 이용한 단순한 풀이였지만, 정답을 맞춘 뒤 맘에 들지않는 부분을 수정하였다. import java.io.BufferedReader; import java.io.IOException; import java.io.InputStreamReader; import java.util.LinkedList; import java.util.Queue; import java..
문제 링크 https://www.acmicpc.net/problem/11724 11724번: 연결 요소의 개수 첫째 줄에 정점의 개수 N과 간선의 개수 M이 주어진다. (1 ≤ N ≤ 1,000, 0 ≤ M ≤ N×(N-1)/2) 둘째 줄부터 M개의 줄에 간선의 양 끝점 u와 v가 주어진다. (1 ≤ u, v ≤ N, u ≠ v) 같은 간선은 한 번만 주어 www.acmicpc.net 풀이 DFS로 접근했고 딱히 설명할 부분은 없는 것 같다. 굳이 하자면, 연결 요소를 구하는 문제이기 때문에 chk변수를 둬서, 방문하지 않은 곳에 첫 방문 시를 새로운 연결 요소가 있는 경우로 두고 풀었음. import java.io.BufferedReader; import java.io.IOException; impor..
문제 링크 https://www.acmicpc.net/problem/2606 2606번: 바이러스 첫째 줄에는 컴퓨터의 수가 주어진다. 컴퓨터의 수는 100 이하인 양의 정수이고 각 컴퓨터에는 1번 부터 차례대로 번호가 매겨진다. 둘째 줄에는 네트워크 상에서 직접 연결되어 있는 컴퓨터 쌍 www.acmicpc.net 풀이 DFS, BFS 둘 다 가능했지만, BFS에 조금 미숙하여 BFS로 진행하였다. 난이도가 쉬운 문제라 (실버 3?) 구현에 어려움은 없었다. 1에서 시작하여, chk와 연결되어있는 노드들의 방문여부를 체크하여 미방문 시 cnt++ import java.io.BufferedReader; import java.io.IOException; import java.io.InputStreamRea..
문제 링크 https://www.acmicpc.net/problem/1012 1012번: 유기농 배추 차세대 영농인 한나는 강원도 고랭지에서 유기농 배추를 재배하기로 하였다. 농약을 쓰지 않고 배추를 재배하려면 배추를 해충으로부터 보호하는 것이 중요하기 때문에, 한나는 해충 방지에 www.acmicpc.net 풀이 자신있는 DFS로 풀었고, BFS는 몇 번 해보지 않아 사용을 해보기로 했다. DFS import java.io.BufferedReader; import java.io.IOException; import java.io.InputStreamReader; import java.util.StringTokenizer; public class BakJoon1012 { public static void ..
너비 우선 탐색 ( Breadth-first search )트리나 그래프를 방문 또는 탐색하는 방법으로 루트 노드에서 시작해서 인접 노드를 먼저 탐색하는 방법. 탐색 방법1. 루트노드에서 시작한다. 2. 자식노드들을 저장한다. 3. 저장되어있는 노드를 방문하며 저장되어있는 노드들의 자식들을 저장하며 4. 위의 과정을 모든 노드를 방문할 때 까지 반복하며 완료 시 탐색을 종료한다. 특징1. 어떤 노드를 방문했는지 반드시 검사 해야 한다.2. Queue를 사용하는 경우가 일반적이며 재귀적으로 동작하지 않는다.3. Prim, Dijkstra알고리즘과 유사하다. 장점1. 노드의 수가 적고 깊이가 얕은 경우 빠르게 동작할 수 있다.2. 단순 검색 속도가 깊이 우선 탐색(DFS)보다 빠르다.3. 너비..