백준 알고리즘

[C언어] 백준 알고리즘 1652번 문제 누울 자리를 찾아라

컴공코딩러 2019. 1. 27. 15:44

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


문제

일 년 동안 세계일주를 하던 영식이는 여행을 하다 너무 피곤해서 근처에 있는 코레스코 콘도에서


 하룻밤 잠을 자기로 하고 방을 잡았다. 코레스코 콘도에 있는 방은 NxN의 정사각형모양으로 생겼다.


 방 안에는 옮길 수 없는 짐들이 이것저것 많이 있어서 영식이의 누울 자리를 차지하고 있었다. 


영식이는 이 열악한 환경에서 누울 수 있는 자리를 찾아야 한다. 영식이가 누울 수 있는 자리에는 조건이 있다. 


똑바로 연속해서 2칸 이상의 빈 칸이 존재하면 그 곳에 몸을 양 옆으로 쭉 뻗으면서 누울 수 있다. 


가로로 누울 수도 있고 세로로 누울 수도 있다. 누울 때는 무조건 몸을 쭉 뻗기 때문에


 반드시 벽이나 짐에 닿게 된다. (중간에 어정쩡하게 눕는 경우가 없다.)




만약 방의 구조가 위의 그림처럼 생겼다면, 가로로 누울 수 있는 자리는 5개이고, 


세로로 누울 수 있는 자리는 4개 이다. 방의 크기 N과 방의 구조가 주어졌을 때, 


가로로 누울 수 있는 자리와 세로로 누울 수 있는 자리의 수를 구하는 프로그램을 작성하시오.


입력

첫째 줄에 방의 크기 N이 주어진다. N은 1이상 100이하의 정수이다. 


그 다음 N줄에 걸쳐 N개의 문자가 들어오는데 '.'은 아무것도 없는 곳을 의미하고, '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
#include <stdio.h>
 
void find_sleeping_space()
{
    int N;
    scanf("%d"&N);
    int i, j;
    int T_col_cnt = 0;
    int T_row_cnt = 0;
    int col_cnt = 0;
    int row_cnt = 0;
    char A[101][101];
    getchar();
    for (i = 0;i < N;i++)
    {
        for (j = 0;j < N;j++)
        {
            scanf("%c"&A[i][j]);
        }
        getchar();
    }
    for (i = 0;i < N;i++)
    {
        for (j = 0;j < N;j++)
        {
            if (A[i][j] == '.')
                col_cnt++;
            else if (A[i][j] = 'X')
            {
                if (col_cnt>=2)
                    T_col_cnt++;
                col_cnt = 0;
            }
            if (A[j][i] == '.')
                row_cnt++;
            else if (A[j][i] = 'X')
            {
                if (row_cnt >= 2)
                    T_row_cnt++;
                row_cnt = 0;
            }
        }
        if (col_cnt >=2)
            T_col_cnt++;
        if (row_cnt >= 2)
            T_row_cnt++;
        col_cnt = row_cnt = 0;
    }
    printf("%d %d", T_col_cnt, T_row_cnt);
}
void main()
{
    find_sleeping_space();
}
 
 
cs


한줄엔 자리가있다면 한번만 누울수있는줄 알았는데. 


..X.. 이면 한줄엔 누울자리가 2곳이다