약간 까다로웠던 문제


cnt라는 변수를 만들어 가능or불가능을 따졌다.


cnt == 이때까지 연속된 높이의 칸 숫자


를 의미하며 cnt>=L이면 오르막길을 만들 수 있는 충분한 공간이 된다.


다음 칸이 현재 칸보다 높이가 1 낮으면 cnt = -L + 1로 설정한다.


이건 앞으로 -L + 1개의 같은 칸 수가 나와야한다는 것을 의미한다.


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
#include <stdio.h>
 
int n, l, a[101][101], dx[] = { 0,0,1,-1 }, dy[] = { 1,-1,0,0 }, ans;
 
int main() {
    scanf("%d%d"&n, &l);
    int i, j;
    for (i = 0; i < n; i++for (j = 0; j < n; j++scanf("%d"&a[i][j]);
    for (i = 0; i < n; i++) {
        int cnt = 1;
        for (j = 0; j < n - 1; j++) {
            if (a[i][j] == a[i][j + 1]) cnt++;
            else if (a[i][j] + 1 == a[i][j + 1&& cnt >= l) cnt = 1;
            else if (a[i][j] - 1 == a[i][j + 1&& cnt >= 0) cnt = -+ 1;
            else break;
        }
        if (j == n - 1 && cnt >= 0) ans++;
        cnt = 1;
        for (j = 0; j < n - 1; j++) {
            if (a[j][i] == a[j + 1][i]) cnt++;
            else if (a[j][i] + 1 == a[j + 1][i] && cnt >= l) cnt = 1;
            else if (a[j][i] - 1 == a[j + 1][i] && cnt >= 0) cnt = -+ 1;
            else break;
        }
        if (j == n - 1 && cnt >= 0) ans++;
    }
    printf("%d\n", ans);
    return 0;
}
cs


'BOJ' 카테고리의 다른 글

13226 Divisors Again  (0) 2017.10.30
14891 톱니바퀴  (0) 2017.10.26
14889 스타트와 링크  (0) 2017.10.26
14888 연산자 끼워넣기  (0) 2017.10.26
14648 쿼리 맛보기  (0) 2017.10.03

+ Recent posts