๋ฌธ์ (์ถ์ฒ: https://www.acmicpc.net/problem/25416)
< ๋น ๋ฅธ ์ซ์ ํ์ >
๋ฌธ์ ํ์ด
bfs๋ฅผ ํ์ฉํ์ฌ ๋ฌธ์ ๋ฅผ ํด๊ฒฐํ๋ค.
my solution (Java)
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.LinkedList;
import java.util.Queue;
import java.util.StringTokenizer;
public class _25416_ { // ๋น ๋ฅธ ์ซ์ ํ์
static int arr[][], result;
static boolean visited[][];
static int dx[] = { -1, 1, 0, 0 };
static int dy[] = { 0, 0, -1, 1 };
public static void main(String[] args) throws IOException {
BufferedReader bf = new BufferedReader(new InputStreamReader(System.in));
StringTokenizer st;
arr = new int[5][5];
visited = new boolean[5][5];
result = -1;
for (int i = 0; i < 5; i++) {
st = new StringTokenizer(bf.readLine());
for (int j = 0; j < 5; j++) {
arr[i][j] = Integer.parseInt(st.nextToken());
}
}
st = new StringTokenizer(bf.readLine());
int r = Integer.parseInt(st.nextToken());
int c = Integer.parseInt(st.nextToken());
bfs(r, c);
System.out.println(result);
}
private static void bfs(int r, int c) {
Queue<int[]> queue = new LinkedList<>();
queue.add(new int[] { r, c, 0 });
visited[r][c] = true;
while (!queue.isEmpty()) {
int temp[] = queue.poll();
for (int i = 0; i < 4; i++) {
int x = temp[0] + dx[i];
int y = temp[1] + dy[i];
if (x >= 0 && x < 5 && y >= 0 && y < 5 && !visited[x][y] && arr[x][y] != -1) {
if (arr[x][y] == 1) {
result = temp[2] + 1;
break;
}
visited[x][y] = true;
queue.add(new int[] { x, y, temp[2] + 1 });
}
}
if (result != -1)
break;
}
}
}
Main
๋ณ์)
arr : ๋ณด๋ ์ ๋ณด ์ ์ฅ
visited : ๋ฐฉ๋ฌธ ์ฌ๋ถ
result : ์ต์ ์ด๋ ํ์
r, c : ํ์์ ํ์ฌ ์์น
queue : [x์ขํ, y์ขํ, ์ด๋ ํ์]
- ๋ณด๋ ์ ๋ณด ์ ๋ ฅ๋ฐ์ ์ ์ฅ
- ํ์ฌ ์์น ์ ๋ ฅ
- bfs ํจ์ ํธ์ถ
- ์ต์ ์ด๋ ํ์ ์ถ๋ ฅ
bfs
- queue์ ์ ์ฅ [x, y, ์ด๋ ์]
- queue๊ฐ ๋น ๋๊น์ง ๋ฐ๋ณต
: 4๊ฐ์ง ๋ฐฉํฅ์ผ๋ก ์ด๋ํ์ฌ ๋ณด๋ ๋ฒ์ ์์ด๋ฉฐ ์์ง ๋ฐฉ๋ฌธํ์ง ์์๊ณ ์ด๋ํ ์นธ์ ๊ฐ์ด -1์ด ์๋๋ผ๋ฉด
: ๋ง์ฝ ์ด๋ํ ์นธ์ ๊ฐ์ด 1์ด๋ผ๋ฉด ์ข ๋ฃ
: ๋ฐฉ๋ฌธ ํ์ ๋ฐ queue์ ์ถ๊ฐ

'๐Algorithm > ๐ฅBaekjoon' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[Baekjoon] 25516_๊ฑฐ๋ฆฌ๊ฐ k์ดํ์ธ ํธ๋ฆฌ ๋ ธ๋์์ ์ฌ๊ณผ ์ํํ๊ธฐ (0) | 2023.08.02 |
---|---|
[Baekjoon] 2668_์ซ์๊ณ ๋ฅด๊ธฐ (0) | 2023.08.01 |
[Baekjoon] 18404_ํ๋ช ํ ๋์ดํธ (0) | 2023.07.28 |
[Baekjoon] 25418_์ ์ a๋ฅผ k๋ก ๋ง๋ค๊ธฐ (0) | 2023.07.27 |
[Baekjoon] 12852_1๋ก ๋ง๋ค๊ธฐ 2 (0) | 2023.07.25 |