[백준]7576 토마토

서은경·2023년 3월 16일
0

CodingTest

목록 보기
61/71

실패코드 ..
dfs/bfs는 자신이 조금 붙어서 스스로 풀어보려했으나 안된다
풀이 참고하고 다시 풀어봐야지.. 일단 포스팅 ㅠ

package baekjoon;

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.Arrays;
import java.util.LinkedList;
import java.util.Queue;
import java.util.StringTokenizer;

public class Main_7576 {
    static int M,N;
    static int[][] tomato;
    static boolean[][] visit;
    public static void main(String[] args) throws IOException {
        BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
        StringTokenizer st = new StringTokenizer(br.readLine(), " ");

        M = Integer.parseInt(st.nextToken());       // 상자의 가로 칸
        N = Integer.parseInt(st.nextToken());       // 상자의 세로 칸

        tomato = new int[N][M];
        visit = new boolean[N][M];

        for (int i = 0; i < N; i++) {
            st = new StringTokenizer(br.readLine());
            int j=0;
            while (st.hasMoreTokens()) {
                tomato[i][j] = Integer.parseInt(st.nextToken());
                j++;
            }
        }
        for (int i = 0; i<tomato.length; i++) {
            for (int j = 0; j < tomato[i].length; j++) {
                if(tomato[i][j] == 1) tomatoDelicious(i,j);
            }
        }
    }

    static void tomatoDelicious(int i, int j) {
        int[] dx = new int[]{-1, 1, 0, 0};
        int[] dy = new int[]{0, 0, -1, 1};

        if(!visit[i][j]) {
            visit[i][j] = true;
            Queue<int[]> q = new LinkedList<>();
            q.add(new int[]{i,j});
            while (!q.isEmpty()) {
                System.out.println(i+" "+j);
                int[] loc = q.poll();
                for (int k = 0; k < 4; k++) {
                    int nx = loc[0] + dx[k];
                    int ny = loc[1] + dy[k];

                    if (nx >= 0 && nx < N && ny >= 0 && ny < M) {
                        if (!visit[nx][ny] && tomato[nx][ny] != -1) {
                            System.out.println(nx+" "+ny+" 큐 추가");
                            visit[nx][ny] = true;
                            q.add(new int[]{nx, ny});
                        }
                    }
                }
            }
        }
    }
}

0개의 댓글

관련 채용 정보