본문 바로가기
PS 문제 풀이/Baekjoon

[BOJ] 백준 1652 누울 자리를 찾아라

by 까망 하르방 2021. 2. 24.
반응형

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

 Input 

5

....X

..XX.

.....

.XX..

X....

 

 Output 

5 4

 

배열을 순회하며 양 끝 중에 벽이나 짐이 놓여있는지 확인

- 가로로 누울 수 있는 공간 5개

- 세로로 누울 수 있는 공간 4개


import java.util.Scanner;
 
public class Main {
    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
         
        int N = Integer.parseInt(sc.next());
         
        String[] arr = new String[N];
         
        for(int i=0; i<N; i++) {
            arr[i] = sc.next();
        }
         
        int row = 0;
        int col = 0;
         
        for(int i=0; i<N; i++) {
            for(int j=0; j<N; j++) {
                 
                if(arr[i].charAt(j) == '.') {
                    // 문자열(배열)의 길이를 벗어나지 않는 선에서 다음 위치가 누울 수 있는지 확인
                    // 가로로 누울 수 있는지 확인
                    if( j+1 < N && arr[i].charAt(j+1) == '.' ) {
                        // 실제 문제에서 요구하는 누울 수 있는 위치는
                        // 누운 방향에 짐이나 벽이 위치해야 한다. (중간에 어정쩡하게 있을 수 없다.)
                        // 좌항 = 벽인지 체크 / 우항 = 짐이 놓여 있는지 체크
                        if(j+2 >= N || ( j+2 < N && arr[i].charAt(j+2) == 'X') ) {
                            row++;
                        }
                    }
 
                    // 세로로 누울 수 있는지 확인
                    if (i+1 < N && arr[i+1].charAt(j) == '.') {
                        if(i+2 >= N || (i+2 < N && arr[i+2].charAt(j) == 'X')) {
                            col++;
                        }
                    }
                }
            }
        }
         
        System.out.println(row + " " + col);
         
    }
}

 

반응형

'PS 문제 풀이 > Baekjoon' 카테고리의 다른 글

[BOJ] 백준 1427 소트인사이드  (0) 2021.02.24
[BOJ] 백준 2667 단지 번호 붙이기  (0) 2021.02.24
[BOJ] 백준 1205 등수 구하기  (0) 2021.02.24
[BOJ] 백준 9012 괄호  (0) 2021.02.24
[BOJ] 백준 1193 분수찾기  (0) 2021.02.24

댓글