목록BFS (32)
기록방
👉 문제링크 2667번: 단지번호붙이기 과 같이 정사각형 모양의 지도가 있다. 1은 집이 있는 곳을, 0은 집이 없는 곳을 나타낸다. 철수는 이 지도를 가지고 연결된 집의 모임인 단지를 정의하고, 단지에 번호를 붙이려 한다. 여 www.acmicpc.net 🔸 문제 분석 🔸 n X n 지도에서 붙어있는 집 (1)을 찾아 단지 별로 구분한다. 단지의 수와 각 단지별 집의 수를 오름차순으로 출력한다. BFS로 탐색해 붙어있는 집의 수와 단지 수를 구한다. 🔸 코드 🔸 import java.util.*; public class Main { public static void main(String[] args) { // 1) input Scanner sc = new Scanner(System.in); int n ..
👉 문제링크 2644번: 촌수계산 사람들은 1, 2, 3, …, n (1 ≤ n ≤ 100)의 연속된 번호로 각각 표시된다. 입력 파일의 첫째 줄에는 전체 사람의 수 n이 주어지고, 둘째 줄에는 촌수를 계산해야 하는 서로 다른 두 사람의 번호가 주어 www.acmicpc.net 🔸 문제 분석 🔸 노드 수 n, 시작 노드, 끝 노드, 간선의 수 m과 m개의 간선 정보가 입력된다. 시작 노드부터 끝 노드 까지 몇 개의 간선으로 갈 수 있는지 출력한다. 연결되어있지 않으면 -1을 출력한다. 🔸 코드 🔸 import java.util.ArrayList; import java.util.Scanner; import java.util.Stack; public class Main { public static void ..
👉 문제링크 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 🔸 문제 분석 🔸 n개의 정점 사이의 간선의 정보가 m개 입력된다. 연결된 노드의 묶음(연결 요소) 수를 출력한다. n개의 각 노드를 시작으로 BFS 혹은 DFS로 연결된 노드를 체크한다. 여기서는 BFS를 사용한다. BFS를 위해 큐와 visit 배열을 사용한다. visit 배열에 방문하지 않으면 0, 방문하면 묶음 번호를 저장한다. (0만 아니면 된다.) 묶음 수를 출력한다. 🔸 코드 ..
👉 문제링크 1388번: 바닥 장식 형택이는 건축가이다. 지금 막 형택이는 형택이의 남자 친구 기훈이의 집을 막 완성시켰다. 형택이는 기훈이 방의 바닥 장식을 디자인했고, 이제 몇 개의 나무 판자가 필요한지 궁금해졌다. 나 www.acmicpc.net 🔸 문제 분석 🔸 n x m 바닥에서 판자가 몇 개인지 출력한다. '-'가 가로로 이어지거나, '|'가 세로로 이어지면 하나의 판자이다. 🔸 코드 🔸 import java.util.LinkedList; import java.util.Queue; import java.util.Scanner; public class Main { public static void main(String[] args) { Scanner sc = new Scanner(System.i..
👉 문제링크 16173번: 점프왕 쩰리 (Small) 쩰리는 맨 왼쪽 위의 칸에서 출발해 (행, 열)로 나타낸 좌표계로, (1, 1) -> (2, 1) -> (3, 1) -> (3, 3)으로 이동해 게임에서 승리할 수 있다. www.acmicpc.net 🔸 문제 분석 🔸 n x n 크기의 게임판에서 왼쪽 위 (0,0)부터 탐색하며 오른쪽 아래 (n-1, n-1)에 도착할 수 있는지 결과를 출력한다. 현재 게임판 위치의 값만큼 오른쪽 혹은 아래쪽 한 방향으로 정확히 그 값만큼 움직일 수 있다. 판을 넘어가면 안된다. 🔸 코드 🔸 import java.util.LinkedList; import java.util.Queue; import java.util.Scanner; public class Main { p..