백준

백준 1652 누울 자리를 찾아라(Java)

Park DJ 2023. 1. 23. 04:11

https://www.acmicpc.net/problem/1652

 

1652번: 누울 자리를 찾아라

첫째 줄에 방의 크기 N이 주어진다. N은 1이상 100이하의 정수이다. 그 다음 N줄에 걸쳐 N개의 문자가 들어오는데 '.'은 아무것도 없는 곳을 의미하고, 'X'는 짐이 있는 곳을 의미한다.

www.acmicpc.net


 

해석 및 팁

 


 

이 문제는 연속해서 2칸 이상의 빈칸이 존재하면 누울 수 있습니다. 하지만 주의할 점은 "..XX.." 같은 경우는 경우의 수가 2개라는 것입니다. 따라서 가장자리의 벽을 X로 설정해 놓으면.. X인 경우에만 개수가 늘어납니다.

 


 

Java 코드

 


import java.util.Scanner;

public class Main {
  public static void main(String[] args) {
    Scanner sc = new Scanner(System.in);
    
    int row = 0;
    int col = 0;
    int n = sc.nextInt();
    char[][] arr = new char[n+1][n+1];

    for(int i = 0; i < n; i++) {
      String str = sc.next();
      for(int j = 0; j < n; j++) {
        arr[i][j] = str.charAt(j);
      }
      arr[i][n] = arr[n][i] = 'X';   // 가장자리의 벽도 짐으로 판단
    }

    for(int i = 0; i < n; i++) {
      for(int j = 0; j < n-1; j++) {
        if(arr[i][j] == '.' && arr[i][j+1] == '.' && arr[i][j+2] == 'X') {
          row++;
        }
        if(arr[j][i] == '.' && arr[j+1][i] == '.' && arr[j+2][i] == 'X') {
          col++;
        }
      }
    }
    
   System.out.println(row+" "+col);
  }
}