본문 바로가기

코테/알고리즘

(5)
[JAVA] DFS Flood fill 구현 class Solution { @Test public void solution() { // 5, 5 영역 int[][] board = new int[][] { {0,0,0,0,0}, {0,0,0,1,1}, {0,0,0,1,0}, {1,1,1,1,0}, {0,0,0,0,0} }; DFS_Flood_Fill(board, 1, 1, 3); for(int i = 0; i < board.length; i++) { for(int j = 0; j < board[i].length; j++) { System.out.print(board[i][j] + " "); } System.out.println(""); } } /** * 다차원 배열의 특정 칸과 연결된 영역을 검색하는 알고리즘. * 그림판의 채우기와 같은 기능. * ..
[JAVA] BFS 최단거리 구현 class Solution { @Test public void solution() { int[][] graph = new int[][] { {0,0,0,0,0}, {0,1,1,1,1}, {0,0,0,0,0}, {1,1,1,1,0}, {0,0,0,0,0}, }; 최단경로(graph, 0, 1, 4, 2); } /** * BFS를 활용해 최단경로를 구하기 위한 방법 * @param board 2차원 배열. (값이 0인 영역만 이동하도록 구성됨, 1은 벽) * @param sr - 시작 row * @param sc - 시작 col * @param er - 도착지 row * @param ec - 도착지 col */ void 최단경로(int[][] board, int sr, int sc, int er, int e..
[JAVA] BFS 큐 구현 import java.util.*; class Solution { int n = 5; @Test public void solution() { int[][] graph = new int[n][6]; graph[0][1] = graph[1][0]= 1; graph[0][2] = graph[2][0] = 1; graph[1][3] = graph[3][1] = 1; graph[1][4] = graph[4][1] = 1; graph[2][4] = graph[4][2] = 1; graph[3][4] = graph[4][3] = 1; bfs(graph, 0); } /** * @param graph - 그래프 * @param node - 시작 노드 */ void bfs(int[][] graph, int node) { ..
[JAVA] DFS 재귀 호출 구현 import java.util.*; class Solution { /** * * @param n - 노드의 수 * @param graph - 노드간의 간선이 표현된 그래프 */ @Test public void solution() { int n = 5; int[][] graph = new int[5][6]; graph[0][1] = graph[1][0]= 1; graph[0][2] = graph[2][0] = 1; graph[1][3] = graph[3][1] = 1; graph[1][4] = graph[4][1] = 1; graph[2][4] = graph[4][2] = 1; graph[3][4] = graph[4][3] = 1; dfs(0, graph, new boolean[5]); } public v..
[JAVA] DFS Stack 구현 import java.util.*; class Solution { int n = 5; /** * 스택 구조이므로 DFS의 반대 순서로 동작한다. (간선에 방향이 없어야하며, 동일하게 연결되어야한다.) * @param n - 노드의 수 * @param graph - 노드간의 간선이 표현된 그래프 */ @Test public void solution() { int[][] graph = new int[n][6]; graph[0][1] = graph[1][0]= 1; graph[0][2] = graph[2][0] = 1; graph[1][3] = graph[3][1] = 1; graph[1][4] = graph[4][1] = 1; graph[2][4] = graph[4][2] = 1; graph[3][4] = ..