엄지월드

백준 1652 누울 자리를 찾아라 본문

알고리즘

백준 1652 누울 자리를 찾아라

킨글 2024. 4. 29. 20:43
반응형

문제

설명

실수했던 부분은 한 줄당 2칸이 있으면 해당 줄은 누울 자리가 가능한 것으로 인지하고 다음 줄로 넘어갔었는데, 

X로 구분되어 있으면 한 줄에서 2번 누울 수도 있다는 것을 알게되었다. 

무슨 말이냐면 아래 그림과 같이 X..X..X인 경우 2번 누울 수 있다는 것이다. 

도움이 되도록 아래에 반례를 함께 첨부한다. 

반례

input:
7
X..X..X
.......
.......
X..X..X
.......
.......
X..X..X


answer:
10 10

input:
1
.
answer:
0 0


input:
5
..X..
..X..
XXXXX
..X..
..X..

answer:
8 8

 

 

코드

import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.OutputStreamWriter;

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

        int n = Integer.parseInt(br.readLine());

        char[][] arr = new char[n][n];
        for (int i = 0; i < n; i++) {
            String str = br.readLine();
            for (int j = 0; j < str.length(); j++) {
                arr[i][j] = str.charAt(j);
            }
        }
        if(n == 1) {
            bw.write("0 0\n");
            bw.flush();
            bw.close();
            return;
        }

        int resultRowCnt = 0;
        int resultColCnt = 0;

        for (int i = 0; i < n; i++) {
            boolean isRow = false;
            boolean isCol = false;
            for (int j = 0; j < n-1; j++) {
                if (arr[i][j] == '.' && arr[i][j+1] == '.') {
                    if(!isRow) {
                        resultRowCnt += 1;
                        isRow = true;
                    }
                } else {
                    isRow = false;
                }

                if (arr[j][i] == '.' && arr[j+1][i] == '.') {
                    if(!isCol) {
                        resultColCnt += 1;
                        isCol = true;
                    }
                } else {
                    isCol = false;
                }
            }
        }

        bw.write(resultRowCnt + " " + resultColCnt + "\n");
        bw.flush();
        bw.close();
    }
}

 

 

<광고 한번 클릭해주시면 저에게 큰 힘이 됩니다 😃>

'알고리즘' 카테고리의 다른 글

백준 16435 스네이크버드  (0) 2024.05.06
백준 10826 피보나치 수 4  (0) 2024.05.01
백준 5635 생일  (0) 2024.04.24
백준 11931 수 정렬하기 4  (0) 2024.04.23
백준 2669 직사각형 네개의 합집합의 면적 구하기  (0) 2024.04.22
Comments