14503번 로봇 청소기

동도리동·2021년 10월 13일
0

코딩테스트

목록 보기
58/76

은근 꿀잼

#include <iostream>
#include <vector>
#include <algorithm>

using namespace std;
int dx[4] = { -1,0,1,0 };
int dy[4] = { 0,1,0,-1 };

int map[50][50];
int ch[50][50];
int n, m;
void f() {
	for (int i = 0; i < n; i++) {
		for (int j = 0; j < m; j++) {
			cout << ch[i][j] << " ";
		}
		cout << '\n';
	}
}
int main() {
	//freopen("in1.txt", "rt", stdin);
	cin >> n >> m;
	int x, y, dir;
	cin >> x >> y >> dir;
	for (int i = 0; i < n; i++) {
		for (int j = 0; j < m; j++) {
			cin >> map[i][j];
		}
	}
	int ans = 0;
	ch[x][y] = 1;
	
	int cnt = 0;
	while (1) {
		ch[x][y] = 1;//1번
		int nx = x + dx[(dir + 3) % 4];
		int ny = y + dy[(dir + 3) % 4];
		if (ch[nx][ny] == 0 && map[nx][ny] == 0) {
			dir = (dir + 3) % 4;
			x = nx;
			y = ny;
			cnt = 0;
			continue;
		}
		cnt++;
		dir = (dir + 3) % 4;
		if (cnt != 4) continue;
		else {
			cnt = 0;
			x = x - dx[dir];
			y = y - dy[dir];
			if (map[x][y] == 1)	break;
		}
	}
	for (int i = 0; i < n; i++) {
		for (int j = 0; j < m; j++) {
			if (ch[i][j] == 1) ans++;
		}
	}
	cout << ans << '\n';
	return 0;
}
profile
긍정코딩세상

0개의 댓글

관련 채용 정보