티스토리 뷰

.


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
58
59
60
61
62
63
64
65
66
67
68
69
70
#include<stdio.h>
/*
배열을 사용한 큐를 이용하여 BFS를 구현한다.
문제 푸는 시에 문제점 
1. 배열의 크기에 대한 간과점
2. 큐의 크기 
3. 코드 정확도
*/
#define size_x 1005
#define size_y 1005
 
int map[size_x][size_y];
int check[size_x][size_y];
int q[1000050][2];
int dx[4= { -1100 };
int dy[4= { 00-11 };
int head = 0, tail = 0;
int x, y;
int main() {
    int M, N;
    int i, j;
    scanf("%d %d"&M, &N);
    for (i = 0; i <= N + 1; i++) {
        for (j = 0; j <= M + 1; j++) {
            map[i][j] = -1
            check[i][j] = 0;
        }
    }
 
    for (i = 1; i <= N; i++) {
        for (j = 1; j <= M; j++) {
            scanf("%d"&map[i][j]);
            if (map[i][j] == 1) {
                q[tail][0= i;
                q[tail][1= j; // 매번 익은 애들을 큐에 저장한다.
                tail++;
            }
        }
    }
    
    while (head < tail) {
        x = q[head][0];
        y = q[head][1];
        head++;
        for (i = 0; i < 4; i++) {
            if (x + dx[i] <= N && y + dy[i] <= M && x + dx[i] >= 1 && y + dy[i] >= 1 && map[x + dx[i]][y + dy[i]] == 0) {
                map[x + dx[i]][y + dy[i]] = 1;
                check[x + dx[i]][y + dy[i]] = check[x][y] + 1// 몇일 걸리는 지 check 한다.
                q[tail][0= x + dx[i];
                q[tail][1= y + dy[i]; // 이번에 익은 애들을 큐에 저장한다.
                tail++;
            }
        }
    }
    int days=0, count=0;
    for (i = 1; i <= N; i++) {
        for (j = 1; j <= M; j++) {
            if (days < check[i][j]) {
                days = check[i][j];
            }
            if (map[i][j] == 0)
                count = 1;
        }
    }
    if (count == 1)
        printf("-1\n");
    else
        printf("%d\n", days);
    return 0;
}
cs


'프로그래밍 > 알고리즘' 카테고리의 다른 글

Codility-Lesson01. BinaryGap  (0) 2017.10.18
2 * N 타일링  (0) 2017.05.19
탐욕 알고리즘  (0) 2017.03.24
최소비용 구하기  (0) 2017.03.24
붕어빵 판매하기  (0) 2017.03.20
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
TAG
more
«   2024/10   »
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
글 보관함