Search

๊น€์ค€ํ˜ธ

2.๋ฌธ์ œ์ด๋ฆ„
3. ์ˆ˜ํ–‰์‹œ๊ฐ„[์ดˆ(s)]
3600
์ข‹์•„์š” ๋ˆ„๋ฅด๊ธฐ
์ข‹์•„์š” ์ˆ˜
: 0
5 more properties
| ์ฝ”๋“œ ์ž‘์„ฑํ•˜๊ธฐ
import java.util.LinkedList; import java.util.Queue; class Solution { // ์ƒ, ํ•˜, ์ขŒ, ์šฐ ์ด๋™ static int[] x = {0, 0, 1, -1}; static int[] y = {-1, 1, 0, 0}; // ์žฌ๋ฐฉ๋ฌธ ๋ฐฉ์ง€ boolean[][] visited; public int solution(int[][] maps) { // ์žฌ๋ฐฉ๋ฌธ ๋ฐฉ์ง€ ์ดˆ๊ธฐํ™” visited = new boolean[maps.length][maps[0].length]; return bfs(maps); } private int bfs(int[][] maps) { Queue<int[]> queue = new LinkedList<>(); // ํ์— ์‹œ์ž‘์ ์„ ๋„ฃ๋Š”๋‹ค. queue.add(new int[]{0, 0}); // ์‹œ์ž‘์  ๋ฐฉ๋ฌธ ์™„๋ฃŒ visited[0][0] = true; // ํ๊ฐ€ ๋น„์›Œ์งˆ๋•Œ๊นŒ์ง€ ๋ฐ˜๋ณต while (!queue.isEmpty()) { // ํ์—์„œ ๊ฐ’์„ ๋นผ์„œ ์ž„์‹œ ํด๋”์— ๋„ฃ๋Š”๋‹ค. int[] temp = queue.poll(); // 4๋ฒˆ, 4๋ฐฉํ–ฅ ๋ฐ˜๋ณต for (int i = 0; i < 4; i++) { int nx = temp[0] + x[i]; int ny = temp[1] + y[i]; // ์ง€๋„์˜ ๋ฒ”์œ„๋ฅผ ๋ฒ—์–ด๋‚ฌ์„ ๋•Œ ์ƒ๋žต if (nx < 0 || ny < 0 || nx >= maps.length || ny >= maps[0].length) { continue; } // ๋ฐฉ๋ฌธํ•˜์ง€ ์•Š์•˜์œผ๋ฉด์„œ, ํ•ด๋‹น ์ง€๋„์˜ ์ˆซ์ž๊ฐ€ 1์ธ ๊ฒฝ์šฐ ๋ฐฉ๋ฌธํ•ด์•ผ ํ•˜๋ฏ€๋กœ true if (!visited[nx][ny] && maps[nx][ny] == 1) { // ๋ฐฉ๋ฌธ ํ•˜๋Š” ์ˆœ๊ฐ„ true visited[nx][ny] = true; // ๋ฐฉ๋ฌธํ•˜์˜€์œผ๋ฏ€๋กœ ํ•ด๋‹น ์ขŒํ‘œ๋ฅผ ํ์— ๋„ฃ๋Š”๋‹ค. queue.add(new int[]{nx, ny}); // ๊ธฐ์ค€ ์ž๋ฆฌ์˜ ๊ฐ’ + 1 (๊ฑฐ๋ฆฌ๊ฐ€ ์ฆ๊ฐ€) maps[nx][ny] = maps[temp[0]][temp[1]] + 1; } } } // ์ง€๋„์˜ ๋์— ๋„์ฐฉํ•˜์˜€์œผ๋ฉด, ๋„์ฐฉ์ ์˜ ๊ฐ’์„ ๋ฐ˜ํ™˜ํ•œ๋‹ค. if (visited[maps.length - 1][maps[0].length - 1]) { return maps[maps.length - 1][maps[0].length - 1]; } else { // ์ง€๋„์˜ ๋์— ๋„๋‹ฌํ•˜์ง€ ๋ชปํ–ˆ์œผ๋ฉด -1 ๋ฐ˜ํ™˜ return -1; } } public static void main(String[] args) { int[][] maps = { {1, 0, 1, 1, 1}, {1, 0, 1, 0, 1}, {1, 0, 1, 1, 1}, {1, 1, 1, 0, 1}, {0, 0, 0, 0, 1} }; Solution s = new Solution(); System.out.println(s.solution(maps)); } }
Java
๋ณต์‚ฌ
| ์ฝ”๋“œ ์„ค๋ช…ํ•˜๊ธฐ