[Algorithm - Programmers] 주차 요금 계산

nunu·2023년 12월 17일
0

Algorithm

목록 보기
113/142

https://school.programmers.co.kr/learn/courses/30/lessons/1844

제출 코드

import java.util.LinkedList;
import java.util.Queue;

class Solution {
    public int solution(int[][] maps) {
        int n = maps.length;
        int m = maps[0].length;
        int[][] visited = new int[n][m];

        Queue<Pair> queue = new LinkedList<>();
        Pair now = new Pair(0, 0);
        queue.offer(now);
        visited[now.x][now.y] = 1;

        int[] dx = {-1, 1, 0, 0};
        int[] dy = {0, 0, -1, 1};
        while (!queue.isEmpty()) {
            now = queue.poll();
            if (now.x == n - 1 && now.y == m - 1) {
                return visited[n - 1][m - 1];
            }

            for (int i = 0; i < dx.length; i++) {
                int tx = now.x + dx[i];
                int ty = now.y + dy[i];
                if (tx < 0 || tx >= n || ty < 0 || ty >= m)
                    continue;

                if (maps[tx][ty] == 1 && visited[tx][ty] == 0) {
                    visited[tx][ty] = visited[now.x][now.y] + 1;
                    queue.offer(new Pair(tx, ty));
                }
            }
        }

        return -1;
    }
    class Pair {
        public int x;
        public int y;

        public Pair(int x, int y) {
            this.x = x;
            this.y = y;
        }
    }
}
profile
Hello, I'm nunu

0개의 댓글