[프로그래머스] 절대 외부 IDE를 써선 안돼/Java

[v2] 무인도 여행

SH3542 2024. 11. 11. 16:59

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

 

일반적인 그래프 탐색 문제다.

 

import java.util.*;

class Solution {
    public int[] solution(String[] maps) {

        List<Integer> ans = new ArrayList<>();

        int R = maps.length;
        int C = maps[0].length();

        char[][] map = new char[R][C];
        boolean[][] vst = new boolean[R][C];

        int dr[] = {0,0,-1,1};
        int dc[] = {-1,1,0,0};

        for(int i=0; i<R; i++) {
            String s = maps[i];
            for(int j=0; j<C; j++) {
                map[i][j] = s.charAt(j);
            }
        }

        Queue<int[]> q = new ArrayDeque();

        for(int i=0; i<R; i++) {
            for(int j=0; j<C; j++) {

                if(!vst[i][j] && map[i][j] != 'X') {

                    int val = map[i][j];
                    int cnt = 1;

                    q.offer(new int[]{i,j});
                    vst[i][j] = true;

                    while(!q.isEmpty()) {
                        int[] info = q.poll();
                        int r = info[0];
                        int c = info[1];

                        for(int t=0; t<4; t++) {

                            int tr = r + dr[t];
                            int tc = c + dc[t];

                            if(tr >= 0 && tr < R && tc >= 0 && tc < C && !vst[tr][tc] && map[tr][tc] != 'X') {
                                vst[tr][tc] = true;
                                val += map[tr][tc];
                                cnt++;

                                q.offer(new int[]{tr,tc});
                            }
                        }
                    }

                    ans.add(val - cnt * '0');
                }
            }
        }

        return ans.isEmpty()? new int[]{-1} : ans.stream().mapToInt(Integer::valueOf).sorted().toArray();
    }
}

 

'[프로그래머스] 절대 외부 IDE를 써선 안돼 > Java' 카테고리의 다른 글

[lv2] 튜플  (1) 2024.11.15
[lv3] 양과 늑대  (2) 2024.11.13
[lv3] 110 옮기기  (0) 2024.11.11
[lv3] 풍선 터트리기  (1) 2024.11.09
[lv3] 다단계 칫솔 판매  (0) 2024.11.08