[SWEA] (실패) 24571 4방 탐색 기본 문제

Hyun·2025년 7월 29일
0

SWEA

목록 보기
1/4


풀이

4방향의 정보를 포함하는 델타 배열(행, 열 각각)을 생성하여 이를 활용하였다.
탐색 방법은 단순하게 2중 for문을 사용했다.

처음에 문제를 꼼꼼히 안 읽어서 "0과 인접한 숫자" 에 대해서만 4방 탐색을 수행해야 하는데, 모든 숫자에 대해 4방 탐색을 수행했다. 문제를 꼼꼼히 보자.

import java.io.BufferedReader;
import java.io.InputStreamReader;

public class fourDirArray {
    public static void main(String[] args) throws Exception {
        BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
        int t = Integer.parseInt(br.readLine());
        int[] dr = {-1, 1, 0, 0};
        int[] dc = {0 ,0 ,-1, 1};

        // 테스트 케이스 t번 입력받기
        for(int o = 1; o <= t; o++){
            int sum = 0;
            String[] fs = br.readLine().split(" ");
            int n = Integer.parseInt(fs[0]);
            int m = Integer.parseInt(fs[1]);
            int[][] map = new int[n][m];
            int[][] map_v = new int[n][m]; // 방문 처리를 위한 배열(map 에 하면 나머지 케이스에 적용 불가)

            // 배열 입력
            for(int r = 0; r < n; r++){
                String[] s = br.readLine().split(" ");
                for(int c = 0; c < m; c++){
                    map[r][c] = s[c].charAt(0) - '0';
                }
            }
            // 4방 탐색
            for(int i = 0; i < n; i++){
                for(int j = 0; j < m; j++){
                    for(int d = 0; d < 4; d++){
                        int nr = i + dr[d];
                        int nc = j + dc[d];
                        if(map[i][j] == 0 && nr >= 0 && nr < n && nc >= 0 && nc < m && map_v[nr][nc] != -1){
                            sum += map[nr][nc];
                            map_v[nr][nc] = -1; // 방문처리, 재방문 못하도록
                        }
                    }
                }
            }
            System.out.println("#" + o + " " + sum);
        }
    }
}
profile
better than yesterday

0개의 댓글