# 단순 구현
일단, 지문이 뭔가 모호한거같다...
나의 멍첨함에 경의를 표한다...
# 실수 했던 점....
바보.... 리얼 바보.... 왜 틀렸나했다....
시계 방향을 int dy[4]={1,0,-1,0},dx[4]={0,1,0,-1}; 이렇게 하고 풀었다.....
시계 방향은 int dy[4]={-1,0,1,0},dx[4]={0,1,0,-1}; 이게 맞다.....
#include <iostream> #include <algorithm> #include <vector> #include <queue> #include <math.h> #include <limits.h> #include <string.h> #include <string> #include <sstream> #define MAX 55 #define INF 2123456789 using namespace std; typedef long long ll; int n,m,y,x,d; // 북,동,남,서(시계방향) int dy[4]={-1,0,1,0},dx[4]={0,1,0,-1}; int map[MAX][MAX]; int main() { // 입력을 받아온다. scanf("%d%d",&n,&m); scanf("%d%d%d",&y,&x,&d); for(int i=0;i<n;i++) for(int j=0;j<m;j++) scanf("%d",&map[i][j]); int tf=1,cnt=0; while(tf) { if(!map[y][x]) cnt++; map[y][x]=2; for(int i=0;i<5;i++) { // 4방향 모두 탐색하였을 때, if(i==4) { int ny = y+dy[(d+2)%4], nx = x+dx[(d+2)%4]; // 뒤로 이동 가능 한 경우 if (map[ny][nx] != 1) { y = ny,x = nx; } // 뒤가 벽인 경우 else tf = 0; break; } // 회전 하면서 확인한다. d=(d+3)%4; int ny=y+dy[d],nx=x+dx[d]; if(!map[ny][nx]) { y = ny, x = nx; break; } } } printf("%d",cnt); return 0; }
'IT > BOJ' 카테고리의 다른 글
백준(BOJ) 14889 스타트와 링크 * (0) | 2019.03.22 |
---|---|
백준(BOJ) 14888 연산자 끼워넣기 * (0) | 2019.03.21 |
백준(BOJ) 13458 시험 감독 * (0) | 2019.03.18 |
백준(BOJ) 2870 수학숙제 * (0) | 2019.03.17 |
백준(BOJ) 2667 단지번호붙이기 * (0) | 2019.03.14 |