ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • 로봇청소기
    백준알고리즘 2019. 8. 8. 00:54
    #include <cstdio>
    
    int n, m, ans = 1;
    int x, y, d;
    int a[50][50];
    int dx[] = {-1, 0, 1, 0}
    int dy[] = {0, 1, 0, -1};
    
    void go() {
        while (true) {
            bool clean = false;
            for (int k=0; k<4; k++) {
                int nd = (d+3)%4;
                int nx = x+dx[nd], ny = y+dy[nd];
                d = nd;
                if (!a[nx][ny]) {
                    a[nx][ny] = 2;
                    ans += 1;
                    x = nx, y = ny;
                    clean = true;
                    break;
                }
            }
            if (!clean) {
                if (a[x-dx[d]][y-dy[d]] == 1) return;
                else x -= dx[d], y -= dy[d];
            }
        }
    }
    
    int main() {
        scanf("%d %d", &n, &m);
        scanf("%d %d %d", &x, &y, &d);
        for (int i=0; i<n; i++) {
            for (int j=0; j<m; j++) {
                scanf("%d", &a[i][j]);
            }
        }
        a[x][y] = 2;
    	go();
        printf("%d\n", ans);
        return 0;
    }

    boj

    '백준알고리즘' 카테고리의 다른 글

    스도쿠  (0) 2019.08.09
    스타트와 링크  (0) 2019.08.08
    구슬탈출2  (0) 2019.08.06
    치킨배달  (0) 2019.08.02
    경사로  (0) 2019.08.02

    댓글

Designed by Tistory.