[SWEA] 24574. 8방탐색 기본 문제

Hyun·2025년 7월 29일
0

SWEA

목록 보기
2/4

문제


풀이

package array;

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

public class eightDirArray {

    public static void main(String[] args) throws Exception{
        BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
        int t = Integer.parseInt(br.readLine());
        // 8방 탐색을 위한 방향 정의
        int[] dr = {-1,-1,0,1,1,1,0,-1};
        int[] dc = { 0, 1,1,1,0,-1,-1,-1};

        // 케이스별 처리
        for(int o = 1; o <= t; o++){
            String[] s = br.readLine().split(" ");
            int n = Integer.parseInt(s[0]);
            int m = Integer.parseInt(s[1]);
            char[][] map = new char[n][m];
            boolean[][] map_v = new boolean[n][m];
            int sum = 0;
            // 배열 입력 받기
            for(int i = 0; i < n; i++){
                String[] tmp = br.readLine().split(" ");
                for(int j = 0; j < m; j++){
                    map[i][j] = tmp[j].charAt(0);
                }
            }
            // 8방 탐색 수행
            for(int i = 0; i < n; i++){
                for(int j = 0; j < m; j++){
                    for(int d = 0; d < 8; d++){
                        int nr = i + dr[d];
                        int nc = j + dc[d];
                        // 8방으로 방문 가능한 좌표인 경우 방문
                        if(map[i][j] == 'X' && nr >= 0 && nr < n && nc >= 0 && nc < m && !map_v[nr][nc] && map[nr][nc] != 'X'){
                            sum += Integer.parseInt(String.valueOf(map[nr][nc])); // char -> int 로 변환할 때는 Integer.parseInt(String.valueOf(char s))
                            map_v[nr][nc] = true; // 방문 처리
                        }
                    }
                }
            }
            System.out.println("#" + o + " " + sum);

        }
    }
}
profile
better than yesterday

0개의 댓글