본문 바로가기
백준 알고리즘/시뮬레이션

백준 15685번 C++

by paysmile 2019. 8. 28.

 

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

using namespace std;
const int MAX = 101;
struct Move {
	int x, y;
};
Move mv[4] = { {1,0}, {0,-1}, {-1,0}, {0,1} };

int main(void) {
	int n;
	int visited[MAX][MAX];

	
	cin >> n;
	for (int i = 0; i < n; i++) {
		int x, y, d, g;

		cin >> x >> y >> d >> g;
		vector<int> dir;
		dir.push_back(d);
		for (int k = 0; k < g; k++) {
			vector<int> temp = dir;
			for (int j = temp.size() - 1; j >= 0; j--) {
				dir.push_back((temp[j] + 1) % 4);
			}
		}
		visited[x][y] = 1;
		for (int k = 0; k < dir.size(); k++) {
			x += mv[dir[k]].x;
			y += mv[dir[k]].y;
			if (0 <= x && x < MAX && 0 <= y && y < MAX)
				visited[x][y] = 1;
		}
	}
	int answer = 0;
	for (int i = 0; i < MAX; i++) {
		for (int j = 0; j < MAX; j++) {
			if (visited[i][j]==1 && visited[i][j + 1]==1 && visited[i + 1][j]==1 && visited[i + 1][j + 1]==1)
				answer++;
		}
	}
	cout << answer << endl;
	return 0;
}

'백준 알고리즘 > 시뮬레이션' 카테고리의 다른 글

백준 5532번 C++  (0) 2019.08.28
백준 2164번 C++  (0) 2019.08.28
백준 14503번 C++  (0) 2019.08.28
백준 2455번 C++  (0) 2019.08.26
백준 14499번 C++  (0) 2019.04.07