Notice
Recent Posts
Recent Comments
Link
«   2025/07   »
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 30 31
Archives
Today
Total
관리 메뉴

킹솔이

[백준/C++] 14503 로봇 청소기 본문

Algorithm

[백준/C++] 14503 로봇 청소기

킹솔이 2020. 2. 4. 22:29
#include<iostream>
using namespace std;

int map[50][50] = { 1, };

int main() {
	int n, m;
	cin >> n >> m;
		
	int r, c, d;
	cin >> r >> c >> d;
	for (int i = 0; i < n; i++) {
		for (int j = 0; j < m; j++) {
			cin >> map[i][j];
		}
	}

	int dx[4] = { 0,1,0,-1 };
	int dy[4] = { -1,0,1,0 };
	int count = 0;
	while (true) {
		
		map[r][c] = 2;
		int temp = (d + 3) % 4;
		if (count < 4) {
			
			if (map[r + dy[temp]][c + dx[temp]] == 0) {
				d = temp;
				r = r + dy[temp];
				c = c + dx[temp];
				count = 0;
				continue;
			}
			else if (map[r + dy[temp]][c + dx[temp]] == 1 || map[r + dy[temp]][c + dx[temp]] == 2) {
				d = temp;
				count++;
				continue;
			}
		}
		else {
			if (map[r + dy[(d + 2) % 4]][c + dx[(d + 2) % 4]] != 1) {
				
				r = r + dy[(d + 2) % 4];
				c = c + dx[(d + 2) % 4];
				count = 0;
				continue;
			}
			else break;
		}		
	}

	int answer = 0;
	for (int i = 0; i < n; i++) {
		for (int j = 0; j < m; j++) {
			if (map[i][j] == 2) answer++;
		}
	}
	cout << answer;
	return 0;
}