BFS 3

[ Baekjoon ] 2573번 - 빙산

2573번: 빙산 첫 줄에는 이차원 배열의 행의 개수와 열의 개수를 나타내는 두 정수 N과 M이 한 개의 빈칸을 사이에 두고 주어진다. N과 M은 3 이상 300 이하이다. 그 다음 N개의 줄에는 각 줄마다 배열의 각 행을 www.acmicpc.net 풀이 방법 여기서 같은 값을 가지는 2차원 배열이 2개 존재하도록 문제를 풀었기 때문에 shallow copy와 deep copy의 차이를 알아야한다. 먼저 shallow copy는 원본 참조변수의 참조값만 복사하는 것이고, deep copy는 원본 참조변수의 참조값이 가르키는 객체를 메모리 공간에 복사 생성 후 복사본 참조변수가 가르키는 것을 의미한다. 좀 더 쉽게 말하면 shallow copy는 복사 후 원본이나 복사본을 수정하면 둘 다 동일한 객체를 ..

Algorithm/Baekjoon 2021.01.13

[ Baekjoon ] 2468번 - 안전 영역

2468번: 안전 영역 재난방재청에서는 많은 비가 내리는 장마철에 대비해서 다음과 같은 일을 계획하고 있다. 먼저 어떤 지역의 높이 정보를 파악한다. 그 다음에 그 지역에 많은 비가 내렸을 때 물에 잠기지 않는 www.acmicpc.net 풀이방법 구현 코드 import java.io.BufferedReader; import java.io.IOException; import java.io.InputStreamReader; import java.util.StringTokenizer; public class Q_2468 { static int N; static int[][] array, visited; static int[] x = { -1, 1, 0, 0 }; static int[] y = { 0, 0, ..

Algorithm/Baekjoon 2021.01.13

[ Baekjoon ] 2178번 - 미로 탐색

2178번: 미로 탐색 첫째 줄에 두 정수 N, M(2 ≤ N, M ≤ 100)이 주어진다. 다음 N개의 줄에는 M개의 정수로 미로가 주어진다. 각각의 수들은 붙어서 입력으로 주어진다. www.acmicpc.net 풀이 방법 맨 처음 풀었을 때 런타임 에러(StackOverflow)가 났다. 그 이유는 잘못된 재귀호출이 반복되어서였다. 일반적인 BFS가 아니라 나만의 이상한 BFS로 Stack과 Queue를 섞어 만들었기 때문이다. 그래서 Queue만 사용하는 BFS로 구현하였다. 이때, 최단 경로를 찾아야 하기 때문에 BFS 탐색을 해주었다. 구현 코드 import java.io.BufferedReader; import java.io.IOException; import java.io.InputStrea..

Algorithm/Baekjoon 2021.01.13