본문 바로가기
코딩 문제 풀이/백준

[백준] 자바 문제 풀이 16724 : 골드3

by 코딩하는 랄로 2023. 9. 21.
728x90
import java.io.*;
import java.util.*;

public class Main {

    public static void main(String[] args) throws Exception {
        BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(System.out));
        BufferedReader br = new BufferedReader(new InputStreamReader(System.in));

        StringTokenizer str = new StringTokenizer(br.readLine());
        int n = Integer.parseInt(str.nextToken());
        int m = Integer.parseInt(str.nextToken());

        char[][] board = new char[n][m];
        boolean[][] visit = new boolean[n][m];

        for(int i = 0; i < n; i++) {
            String s = br.readLine();
            for(int j = 0; j < m; j++) {
                board[i][j] = s.charAt(j);
                visit[i][j] = false;
            }
        }

        int cnt = 0;
        int visit_cnt = 0;

        for(int a = 0; a < n; a++) {
            for(int b = 0; b < m; b++) {
                if(visit[a][b]) continue;

                boolean path = false;
                ArrayList<String> p = new ArrayList<>();
                int i = a;
                int j = b;
                while(!visit[i][j]) {
                    p.add(i + " " + j);
                    visit[i][j] = true;
                    if(board[i][j] == 'U') {
                        i--;
                    } else if(board[i][j] == 'D') {
                        i++;
                    } else if(board[i][j] == 'L') {
                        j--;
                    } else {
                        j++;
                    }
                    if(visit[i][j]){
                        if(!p.contains(i + " " +j)){
                            path = true;
                        }
                        break;
                    }
                }
                if(!path){
                    cnt++;
                }
            }
        }


        bw.write(cnt + "\n");

        bw.flush();
        bw.close();
        br.close();
    }
}
728x90