#include <iostream> using namespace std; struct robot { int r; int c; int dir; }; int main() { int N, M; cin >> N >> M; bool map[50][50] = { 1 }; robot x; cin >> x.r >> x.c >> x.dir; int cnt = 0; for (int i = 0; i<N; i++) for (int j = 0; j<M; j++) cin >> map[i][j]; while (1) { map[x.r][x.c] = 1; if (!(map[x.r][x.c - 1] & map[x.r][x.c + 1] & map[x.r - 1][x.c] & map[x.r + 1][x.c])) { if (x.dir == 0) { x.dir = 3; if (map[x.r][x.c - 1] == 0) { x.c = x.c - 1; cnt++; } } else if (x.dir == 1) { x.dir = 0; if (map[x.r - 1][x.c] == 0) { x.r = x.r - 1; cnt++; } } else if (x.dir == 2) { x.dir = 1; if (map[x.r][x.c + 1] == 0) { x.c = x.c + 1; cnt++; } } else {//if(x.dir==3) x.dir = 2; if (map[x.r + 1][x.c] == 0) { x.r = x.r + 1; cnt++; } } } //if(!(map[x.r][x.c-1]*map[x.r][x.c+1]*map[x.r-1][x.c]*map[x.r+1][x.c])) else { if ((x.dir == 0 && x.r==N-2) || (x.dir == 1 && x.c==1) || (x.dir == 2 && x.r==1) || (x.dir == 3 && x.c==M-2)) { cnt++; cout << cnt; break; } else if (x.dir == 0) { x.r++; } else if (x.dir == 1) { x.c--; } else if (x.dir == 2) { x.r--; } else { x.c++; } } } }
왜 틀렸을까
'알고리즘 문제 풀이 > 1DP_과제(~180615)' 카테고리의 다른 글
171103_1220_magnetic (0) | 2017.11.03 |
---|---|
171103_거듭제곱 (0) | 2017.11.03 |
171103_숫자골라내기 (0) | 2017.11.03 |
171102_11403_경로찾기 (0) | 2017.11.02 |
171102_2178_미로탐색 (0) | 2017.11.02 |