๐ŸŒžAlgorithm/๐Ÿ”ฅBaekjoon

[Baekjoon] 25416_๋น ๋ฅธ ์ˆซ์ž ํƒ์ƒ‰

๋ฟŒ์•ผ._. 2023. 7. 31. 17:22

Silver II

๋ฌธ์ œ(์ถœ์ฒ˜: 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์— ์ถ”๊ฐ€