์•Œ๊ณ ๋ฆฌ์ฆ˜

๋ฐฑ์ค€_15662_ํ†ฑ๋‹ˆ๋ฐ”ํ€ด2

shj718 2022. 3. 14. 08:35

๐Ÿšจ์ž˜๋ชป๋œ ํ’€์ด) ์ฒ˜์Œ ์ฝ”๋“œ๋ฅผ ์งค ๋•Œ, ํšŒ์ „์‹œํ‚ฌ ํ†ฑ๋‹ˆ๋ฐ”ํ€ด๋ฅผ ํšŒ์ „์„ ํ•ด๊ฐ€๋ฉด์„œ ์ฐพ๋Š” ์‹ค์ˆ˜๋ฅผ ํ–ˆ๋‹ค. ์• ์ดˆ์— ํ†ฑ๋‹ˆ๋ฐ”ํ€ด๋ฅผ ํšŒ์ „์‹œํ‚ค๊ธฐ ์ „์— ํšŒ์ „์‹œํ‚ฌ ํ†ฑ๋‹ˆ๋ฐ”ํ€ด๋“ค์„ ๋ฏธ๋ฆฌ ๋‹ค ์ฐพ์•„๋†“์•„์•ผ ํ•œ๋‹ค.

#include <iostream>
#define MAX 1000

using namespace std;

// K๋ฒˆ ํšŒ์ „์‹œํ‚จ ํ›„, ๋ฐฐ์—ด์˜ ์ฒซ๋ฒˆ์งธ ๊ฐ’์ด 1์ธ ํ†ฑ๋‹ˆ๋ฐ”ํ€ด์˜ ๊ฐœ์ˆ˜
int arr[MAX][8], T, K;

void turnArr(int now, int dir);

void solve(int prev, int now, int dir) {
	// ์žฌ๊ท€ ์ข…๋ฃŒ ์กฐ๊ฑด? ์ด์ „์˜ ๊ทน์ด๋ž‘ ๊ทน์ด ๊ฐ™์œผ๋ฉด ํƒ์ƒ‰ ๋ฉˆ์ถ”๊ธฐ, ๊ทน์ด ๋‹ค๋ฅด๋ฉด ๊ณ„์†ํ•ด์„œ ํƒ์ƒ‰ ์ง„ํ–‰.
	// ์œ„ ํ†ฑ๋‹ˆ๋ฐ”ํ€ด์˜ 3๋ฒˆ์งธ๋ž‘ ๋ฐ‘ ํ†ฑ๋‹ˆ๋ฐ”ํ€ด์˜ 7๋ฒˆ์งธ๋ฅผ ๋น„๊ต ( ํšŒ์ „์‹œํ‚ค๊ธฐ ์ „์— ๋น„๊ต ๋จผ์ € )
	if (now < prev) { // ์œ„ ๋ฐฉํ–ฅ
		if (arr[prev][2] == arr[now][6]) return;
		else {
			int new_dir;
			if (dir == 1) new_dir = -1;
			else new_dir = 1;
			turnArr(now, new_dir);
			solve(now, now - 1, new_dir);
		}
	}
	else if (now > prev) { // ์•„๋ž˜ ๋ฐฉํ–ฅ
		if (arr[now][2] == arr[prev][6]) return;
		else {
			int new_dir;
			if (dir == 1) new_dir = -1;
			else new_dir = 1;
			turnArr(now, new_dir);
			solve(now, now + 1, new_dir);
		}
	}
	
}

void turnArr(int now, int dir) {
	int tmp;
	if (dir == 1) {
		tmp = arr[now][7];
		for (int i = 6; i >= 0; i--) {
			arr[now][i + 1] = arr[now][i];
		}
		arr[now][0] = tmp;
	}
	else {
		tmp = arr[now][0];
		for (int i = 1; i <= 7; i++) {
			arr[now][i - 1] = arr[now][i];
		}
		arr[now][7] = tmp;
	}
}

int main() {
	cin >> T;
	string s;
	for (int i = 0; i < T; i++) {
		cin >> s;
		for (int j = 0; j < 8; j++) {
			arr[i][j] = s[j] - '0';
		}
	}
	cin >> K;
	int a, b;

	for (int i = 0; i < K; i++) {
		cin >> a >> b;
        	a -= 1;
		solve(a, a - 1, b);
		solve(a, a + 1, b);
	}

	int cnt = 0;
	for (int i = 0; i < T; i++) {
		if (arr[i][0] == 1) cnt++;
	}

	cout << cnt << '\n';
	return 0;
}