본문 바로가기

Algorithm

(C++) - 백준(BOJ) 1652번 : 누울 자리를 찾아라

반응형

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

 

1652번: 누울 자리를 찾아라

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

www.acmicpc.net

..X..일 경우

....X일 경우를 잘 처리해줘야 합니다.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
#include <iostream>
using namespace std;
//..X..와 ....X를 잘 처리해줘야 합니다.
int main() {
    char room[102][102];
    int n;
    int h = 0,v =0 ;
    cin >> n;
    for (int i = 0; i < n; i++)
        cin >> room[i];
    for (int i = 0; i < n; i++)//가로자리
    {
        int cnt = 0;
        int f = 0;
 
        for (int j = 0; j < n; j++)
        {
            if (room[i][j] == '.')
                cnt++;
            if (cnt == 2
            {
                if (!f)//처음으로 찾은 자리이면
                    h++;
                f = 1;
                cnt = 0;
            }
            else if (room[i][j] == 'X')//X
            {
                cnt = 0;
                f = 0;
            }
        }
    }
    for (int i = 0; i < n; i++)//가로자리
    {
        int cnt = 0;
        int f = 0;
        for (int j = 0; j < n; j++)
        {
            if (room[j][i] == '.')
                cnt++;
            if (cnt == 2)//처음으로 찾은 자리이면
            {
                if (!f)
                    v++
                f = 1;
                cnt = 0;
            }
            else if (room[j][i] == 'X')//X
            {
                cnt = 0;
                f = 0;
            }
        }
    }
    cout << h << ' ' << v << '\n';
}