14504 : 로봇 청소기

풀이

문제에서 주어진대로 구현하면 된다.

지문이 좀 헷갈리게 써있어서 많이 헤메다 풀었다 ㅠㅠ

코드

#include <stdio.h>
#define r(a,b) a=(a+b)%4

const int dx[] = { -1,0,1,0 };
const int dy[] = { 0,1,0,-1 };
int n, m, x, y, nx, ny, d, ans;

int main() {
	int a[55][55] = { 0 };

	scanf("%d %d %d %d %d", &n, &m, &x, &y, &d);
	for (int i = 0; i < n; i++) for (int j = 0; j < m; j++)
		scanf("%d", &a[i][j]);

	bool flag = 1;
	while (flag) {
		if (!a[x][y]) ans++, a[x][y] = 2;
		for (int i = 0; i < 5; i++) {
			if (i == 4) {
				r(d, 2), nx = x + dx[d], ny = y + dy[d], r(d, 2);
				a[nx][ny] != 1 ? (x = nx, y = ny) : flag = 0;
				break;
			}
			r(d, 3), nx = x + dx[d], ny = y + dy[d];
			if (!a[nx][ny]) {
				x = nx, y = ny;
				break;
			}
		}
	}

	printf("%d", ans);

	return 0;
}

아무말

백준, 백준 온라인 저지, BOJ, Baekjoon Online Judge, C, C++, 씨, 씨쁠쁠, JAVA, algorithm, 자바, 알고리즘, 자료구조, 문제, 문제 풀이, 풀이

wookje.kwon's profile image

wookje.kwon

2017-11-17 13:06

Read more posts by this author