BFS 3

프로그래머스 - 전력망을 둘로 나누기[Java][BFS]

https://school.programmers.co.kr/learn/courses/30/lessons/86971 프로그래머스SW개발자를 위한 평가, 교육, 채용까지 Total Solution을 제공하는 개발자 성장을 위한 베이스캠프programmers.co.kr 두개의 연결성분으로 나눠서 두 연경성분의 개수의 구해야 하는 문제이다. 정답을 구하기 위해서 각 연결들을 하나씩 자르면서 그때의 정답을 구해가며 최소값을 구해야 한다.  import java.util.*;class Solution { int[][] arr; public int solution(int n, int[][] wires) { int answer = n; arr = new int[n+1][n+1]; ..

백준-10026번/적록색약 (java)

문제 이해위 표와 같이 RGB로 구성된 그래프에서 색깔별 구역의 갯수를 구해주면 된다. 단, 적록색약의 경우 R과 G를 구분하지 않고 구역의 수를 구해준다.구역의 갯수를 구해주면 되므로 연결성분의 수를 구해줄때와 마찬가지로 BFS로 구현해봤다.문제 해결 BFS구현public static void bfs(int x, int y, char c){ Queue queue = new LinkedList(); queue.add(new int[]{x, y}); visit[x][y] = true; while(!queue.isEmpty()){ int[] point = queue.poll(); int pointX = point[0]; int pointY = poi..

알고리즘/백준 2024.08.13

백준-2178번/섬의 개수(java)

문제 이해 N x M 크기의 그래프가 주어지고 N,M좌표까지의 최단 경로의 칸 이동 수를 구하면 되는 문제이다. 문제를 풀기 위해 BFS(너비 우선 탐색)을 사용하였다. 문제를 풀때 배열에서의 BFS는 처음 구현해보아서 매우 힘들었다..  문제 풀이 변수static int N, M;static int[][] arr;static int[] dx = {-1, 1, 0, 0};static int[] dy = {0, 0, -1, 1};static boolean[][] visit;dx, dy ==> 상하 좌우 이동을 위해 존재visit ==> 방문 여부  public static void BFS(int x, int y) { Queue queue = new LinkedList(); queue.add(ne..

알고리즘/백준 2024.07.25