๐Ÿ™‡โ€โ™€๏ธ[Gold V] ํ†ฑ๋‹ˆ๋ฐ”ํ€ด - 14891

๋ฌธ์ œ ๋งํฌ

์„ฑ๋Šฅ ์š”์•ฝ

๋ฉ”๋ชจ๋ฆฌ: 2024 KB, ์‹œ๊ฐ„: 0 ms

๋ถ„๋ฅ˜

๊ตฌํ˜„, ์‹œ๋ฎฌ๋ ˆ์ด์…˜

์ œ์ถœ ์ผ์ž

2024๋…„ 2์›” 8์ผ 12:12:31

๋ฌธ์ œ ์„ค๋ช…

์ด 8๊ฐœ์˜ ํ†ฑ๋‹ˆ๋ฅผ ๊ฐ€์ง€๊ณ  ์žˆ๋Š” ํ†ฑ๋‹ˆ๋ฐ”ํ€ด 4๊ฐœ๊ฐ€ ์•„๋ž˜ ๊ทธ๋ฆผ๊ณผ ๊ฐ™์ด ์ผ๋ ฌ๋กœ ๋†“์—ฌ์ ธ ์žˆ๋‹ค. ๋˜, ํ†ฑ๋‹ˆ๋Š” N๊ทน ๋˜๋Š” S๊ทน ์ค‘ ํ•˜๋‚˜๋ฅผ ๋‚˜ํƒ€๋‚ด๊ณ  ์žˆ๋‹ค. ํ†ฑ๋‹ˆ๋ฐ”ํ€ด์—๋Š” ๋ฒˆํ˜ธ๊ฐ€ ๋งค๊ฒจ์ ธ ์žˆ๋Š”๋ฐ, ๊ฐ€์žฅ ์™ผ์ชฝ ํ†ฑ๋‹ˆ๋ฐ”ํ€ด๊ฐ€ 1๋ฒˆ, ๊ทธ ์˜ค๋ฅธ์ชฝ์€ 2๋ฒˆ, ๊ทธ ์˜ค๋ฅธ์ชฝ์€ 3๋ฒˆ, ๊ฐ€์žฅ ์˜ค๋ฅธ์ชฝ ํ†ฑ๋‹ˆ๋ฐ”ํ€ด๋Š” 4๋ฒˆ์ด๋‹ค.

์ด๋•Œ, ํ†ฑ๋‹ˆ๋ฐ”ํ€ด๋ฅผ ์ด K๋ฒˆ ํšŒ์ „์‹œํ‚ค๋ ค๊ณ  ํ•œ๋‹ค. ํ†ฑ๋‹ˆ๋ฐ”ํ€ด์˜ ํšŒ์ „์€ ํ•œ ์นธ์„ ๊ธฐ์ค€์œผ๋กœ ํ•œ๋‹ค. ํšŒ์ „์€ ์‹œ๊ณ„ ๋ฐฉํ–ฅ๊ณผ ๋ฐ˜์‹œ๊ณ„ ๋ฐฉํ–ฅ์ด ์žˆ๊ณ , ์•„๋ž˜ ๊ทธ๋ฆผ๊ณผ ๊ฐ™์ด ํšŒ์ „ํ•œ๋‹ค.

ํ†ฑ๋‹ˆ๋ฐ”ํ€ด๋ฅผ ํšŒ์ „์‹œํ‚ค๋ ค๋ฉด, ํšŒ์ „์‹œํ‚ฌ ํ†ฑ๋‹ˆ๋ฐ”ํ€ด์™€ ํšŒ์ „์‹œํ‚ฌ ๋ฐฉํ–ฅ์„ ๊ฒฐ์ •ํ•ด์•ผ ํ•œ๋‹ค. ํ†ฑ๋‹ˆ๋ฐ”ํ€ด๊ฐ€ ํšŒ์ „ํ•  ๋•Œ, ์„œ๋กœ ๋งž๋‹ฟ์€ ๊ทน์— ๋”ฐ๋ผ์„œ ์˜†์— ์žˆ๋Š” ํ†ฑ๋‹ˆ๋ฐ”ํ€ด๋ฅผ ํšŒ์ „์‹œํ‚ฌ ์ˆ˜๋„ ์žˆ๊ณ , ํšŒ์ „์‹œํ‚ค์ง€ ์•Š์„ ์ˆ˜๋„ ์žˆ๋‹ค. ํ†ฑ๋‹ˆ๋ฐ”ํ€ด A๋ฅผ ํšŒ์ „ํ•  ๋•Œ, ๊ทธ ์˜†์— ์žˆ๋Š” ํ†ฑ๋‹ˆ๋ฐ”ํ€ด B์™€ ์„œ๋กœ ๋งž๋‹ฟ์€ ํ†ฑ๋‹ˆ์˜ ๊ทน์ด ๋‹ค๋ฅด๋‹ค๋ฉด, B๋Š” A๊ฐ€ ํšŒ์ „ํ•œ ๋ฐฉํ–ฅ๊ณผ ๋ฐ˜๋Œ€๋ฐฉํ–ฅ์œผ๋กœ ํšŒ์ „ํ•˜๊ฒŒ ๋œ๋‹ค. ์˜ˆ๋ฅผ ๋“ค์–ด, ์•„๋ž˜์™€ ๊ฐ™์€ ๊ฒฝ์šฐ๋ฅผ ์‚ดํŽด๋ณด์ž.

๋‘ ํ†ฑ๋‹ˆ๋ฐ”ํ€ด์˜ ๋งž๋‹ฟ์€ ๋ถ€๋ถ„์€ ์ดˆ๋ก์ƒ‰ ์ ์„ ์œผ๋กœ ๋ฌถ์—ฌ์žˆ๋Š” ๋ถ€๋ถ„์ด๋‹ค. ์—ฌ๊ธฐ์„œ, 3๋ฒˆ ํ†ฑ๋‹ˆ๋ฐ”ํ€ด๋ฅผ ๋ฐ˜์‹œ๊ณ„ ๋ฐฉํ–ฅ์œผ๋กœ ํšŒ์ „ํ–ˆ๋‹ค๋ฉด, 4๋ฒˆ ํ†ฑ๋‹ˆ๋ฐ”ํ€ด๋Š” ์‹œ๊ณ„ ๋ฐฉํ–ฅ์œผ๋กœ ํšŒ์ „ํ•˜๊ฒŒ ๋œ๋‹ค. 2๋ฒˆ ํ†ฑ๋‹ˆ๋ฐ”ํ€ด๋Š” ๋งž๋‹ฟ์€ ๋ถ€๋ถ„์ด S๊ทน์œผ๋กœ ์„œ๋กœ ๊ฐ™๊ธฐ ๋•Œ๋ฌธ์—, ํšŒ์ „ํ•˜์ง€ ์•Š๊ฒŒ ๋˜๊ณ , 1๋ฒˆ ํ†ฑ๋‹ˆ๋ฐ”ํ€ด๋Š” 2๋ฒˆ์ด ํšŒ์ „ํ•˜์ง€ ์•Š์•˜๊ธฐ ๋•Œ๋ฌธ์—, ํšŒ์ „ํ•˜์ง€ ์•Š๊ฒŒ ๋œ๋‹ค. ๋”ฐ๋ผ์„œ, ์•„๋ž˜ ๊ทธ๋ฆผ๊ณผ ๊ฐ™์€ ๋ชจ์–‘์„ ๋งŒ๋“ค๊ฒŒ ๋œ๋‹ค.

์œ„์™€ ๊ฐ™์€ ์ƒํƒœ์—์„œ 1๋ฒˆ ํ†ฑ๋‹ˆ๋ฐ”ํ€ด๋ฅผ ์‹œ๊ณ„ ๋ฐฉํ–ฅ์œผ๋กœ ํšŒ์ „์‹œํ‚ค๋ฉด, 2๋ฒˆ ํ†ฑ๋‹ˆ๋ฐ”ํ€ด๊ฐ€ ๋ฐ˜์‹œ๊ณ„ ๋ฐฉํ–ฅ์œผ๋กœ ํšŒ์ „ํ•˜๊ฒŒ ๋˜๊ณ , 2๋ฒˆ์ด ํšŒ์ „ํ•˜๊ธฐ ๋•Œ๋ฌธ์—, 3๋ฒˆ๋„ ๋™์‹œ์— ์‹œ๊ณ„ ๋ฐฉํ–ฅ์œผ๋กœ ํšŒ์ „ํ•˜๊ฒŒ ๋œ๋‹ค. 4๋ฒˆ์€ 3๋ฒˆ์ด ํšŒ์ „ํ•˜์ง€๋งŒ, ๋งž๋‹ฟ์€ ๊ทน์ด ๊ฐ™๊ธฐ ๋•Œ๋ฌธ์— ํšŒ์ „ํ•˜์ง€ ์•Š๋Š”๋‹ค. ๋”ฐ๋ผ์„œ, ์•„๋ž˜์™€ ๊ฐ™์€ ์ƒํƒœ๊ฐ€ ๋œ๋‹ค.

ํ†ฑ๋‹ˆ๋ฐ”ํ€ด์˜ ์ดˆ๊ธฐ ์ƒํƒœ์™€ ํ†ฑ๋‹ˆ๋ฐ”ํ€ด๋ฅผ ํšŒ์ „์‹œํ‚จ ๋ฐฉ๋ฒ•์ด ์ฃผ์–ด์กŒ์„ ๋•Œ, ์ตœ์ข… ํ†ฑ๋‹ˆ๋ฐ”ํ€ด์˜ ์ƒํƒœ๋ฅผ ๊ตฌํ•˜๋Š” ํ”„๋กœ๊ทธ๋žจ์„ ์ž‘์„ฑํ•˜์‹œ์˜ค.

์ž…๋ ฅ

์ฒซ์งธ ์ค„์— 1๋ฒˆ ํ†ฑ๋‹ˆ๋ฐ”ํ€ด์˜ ์ƒํƒœ, ๋‘˜์งธ ์ค„์— 2๋ฒˆ ํ†ฑ๋‹ˆ๋ฐ”ํ€ด์˜ ์ƒํƒœ, ์…‹์งธ ์ค„์— 3๋ฒˆ ํ†ฑ๋‹ˆ๋ฐ”ํ€ด์˜ ์ƒํƒœ, ๋„ท์งธ ์ค„์— 4๋ฒˆ ํ†ฑ๋‹ˆ๋ฐ”ํ€ด์˜ ์ƒํƒœ๊ฐ€ ์ฃผ์–ด์ง„๋‹ค. ์ƒํƒœ๋Š” 8๊ฐœ์˜ ์ •์ˆ˜๋กœ ์ด๋ฃจ์–ด์ ธ ์žˆ๊ณ , 12์‹œ๋ฐฉํ–ฅ๋ถ€ํ„ฐ ์‹œ๊ณ„๋ฐฉํ–ฅ ์ˆœ์„œ๋Œ€๋กœ ์ฃผ์–ด์ง„๋‹ค. N๊ทน์€ 0, S๊ทน์€ 1๋กœ ๋‚˜ํƒ€๋‚˜์žˆ๋‹ค.

๋‹ค์„ฏ์งธ ์ค„์—๋Š” ํšŒ์ „ ํšŸ์ˆ˜ K(1 โ‰ค K โ‰ค 100)๊ฐ€ ์ฃผ์–ด์ง„๋‹ค. ๋‹ค์Œ K๊ฐœ ์ค„์—๋Š” ํšŒ์ „์‹œํ‚จ ๋ฐฉ๋ฒ•์ด ์ˆœ์„œ๋Œ€๋กœ ์ฃผ์–ด์ง„๋‹ค. ๊ฐ ๋ฐฉ๋ฒ•์€ ๋‘ ๊ฐœ์˜ ์ •์ˆ˜๋กœ ์ด๋ฃจ์–ด์ ธ ์žˆ๊ณ , ์ฒซ ๋ฒˆ์งธ ์ •์ˆ˜๋Š” ํšŒ์ „์‹œํ‚จ ํ†ฑ๋‹ˆ๋ฐ”ํ€ด์˜ ๋ฒˆํ˜ธ, ๋‘ ๋ฒˆ์งธ ์ •์ˆ˜๋Š” ๋ฐฉํ–ฅ์ด๋‹ค. ๋ฐฉํ–ฅ์ด 1์ธ ๊ฒฝ์šฐ๋Š” ์‹œ๊ณ„ ๋ฐฉํ–ฅ์ด๊ณ , -1์ธ ๊ฒฝ์šฐ๋Š” ๋ฐ˜์‹œ๊ณ„ ๋ฐฉํ–ฅ์ด๋‹ค.

์ถœ๋ ฅ

์ด K๋ฒˆ ํšŒ์ „์‹œํ‚จ ์ดํ›„์— ๋„ค ํ†ฑ๋‹ˆ๋ฐ”ํ€ด์˜ ์ ์ˆ˜์˜ ํ•ฉ์„ ์ถœ๋ ฅํ•œ๋‹ค. ์ ์ˆ˜๋ž€ ๋‹ค์Œ๊ณผ ๊ฐ™์ด ๊ณ„์‚ฐํ•œ๋‹ค.

  • 1๋ฒˆ ํ†ฑ๋‹ˆ๋ฐ”ํ€ด์˜ 12์‹œ๋ฐฉํ–ฅ์ด N๊ทน์ด๋ฉด 0์ , S๊ทน์ด๋ฉด 1์ 
  • 2๋ฒˆ ํ†ฑ๋‹ˆ๋ฐ”ํ€ด์˜ 12์‹œ๋ฐฉํ–ฅ์ด N๊ทน์ด๋ฉด 0์ , S๊ทน์ด๋ฉด 2์ 
  • 3๋ฒˆ ํ†ฑ๋‹ˆ๋ฐ”ํ€ด์˜ 12์‹œ๋ฐฉํ–ฅ์ด N๊ทน์ด๋ฉด 0์ , S๊ทน์ด๋ฉด 4์ 
  • 4๋ฒˆ ํ†ฑ๋‹ˆ๋ฐ”ํ€ด์˜ 12์‹œ๋ฐฉํ–ฅ์ด N๊ทน์ด๋ฉด 0์ , S๊ทน์ด๋ฉด 8์ 

๐Ÿš€ํ’€์ด

๋ฐฑ์ค€ ๋„ˆ๋ฌด ์žฌ๋ฐŒ์–ด.

๋Š˜ ์ƒˆ๋กœ์›Œ ๋Š˜ ์งœ๋ฆฟํ•ด..

์ผ๋‹จ ํ†ฑ๋‹ˆ๋ฐ”ํ€ด๋ฅผ ๊ตฌ์กฐ์ฒด๋กœ ๋งŒ๋“ค์–ด์„œ ๊ด€๋ฆฌํ–ˆ๋‹ค.

struct Gear
{
	int cogs[8];
};

cog๊ฐ€ ํ†ฑ๋‹ˆ๋ผ๋Š” ๋œป์ด๋ผ๋”๋ผ

ํ†ฑ๋‹ˆ๋ฐ”ํ€ด๊ฐ€ ํšŒ์ „ํ•  ๋•Œ ๊ทธ ์™ผ์ชฝ ๋ฐ”ํ€ด์™€ ์˜ค๋ฅธ์ชฝ ๋ฐ”ํ€ด์™€์˜ ์ƒํ˜ธ์ž‘์šฉ์ด ์ค‘์š”ํ•˜๋‹ค.
๊ทธ๋ฆฌ๊ณ  ์ƒํ˜ธ์ž‘์šฉ์„ ํ•  ๋•Œ ์ด๋ฏธ ๋Œ๋ ค์ง„ ํ†ฑ๋‹ˆ๋ฐ”ํ€ด๋Š” ๋Œ์•„๊ฐ€๋ฉด ์•ˆ๋œ๋‹ค.

๊ทธ๋Ÿฌ๋ฏ€๋กœ ์ด๋ฏธ ๋Œ๋ ค์กŒ๋Š”์ง€ ํ™•์ธํ•˜๋Š” ๋ฐฐ์—ด์ด ํ•„์š”ํ•˜๋‹ค.

Gear gears[4];
// ์ด๋ฏธ ๋Œ๋ ค์กŒ๋Š”์ง€ ์•„๋‹Œ์ง€ ํ™•์ธ์šฉ์ด ํ•„์š”ํ• ๋“ฏ
int ch[4];

๊ทธ๋ž˜์„œ ์ฒดํฌ๋ฐฐ์—ด์„ ๋งŒ๋“ค์—ˆ๋‹ค.

์˜ค๋ฅธ์ชฝ์œผ๋กœ ํšŒ์ „ํ•˜๋Š” ํ•จ์ˆ˜๋Š” ์•„๋ž˜์™€ ๊ฐ™๋‹ค.

void turnRight(int num)
{
    // ์ด๋ฏธ ๋Œ๋ ค์ง„์ƒํƒœ๋ฉด ๋ฆฌํ„ด
	if (ch[num] == 1)
		return;
    // ์ฒดํฌํ•ด์ฃผ๊ธฐ
	ch[num] = 1;

    // ๋Œ๋ฆฌ๊ธฐ ์ „ 9์‹œ ๋ฐฉํ–ฅ ํ†ฑ๋‹ˆ์˜ ๊ฐ’
	int curLeft = gears[num].cogs[6];
    // ๋Œ๋ฆฌ๊ธฐ ์ „ 3์‹œ ๋ฐฉํ–ฅ ํ†ฑ๋‹ˆ์˜ ๊ฐ’
	int curRight = gears[num].cogs[2];

	// ์˜ค๋ฅธ์ชฝ์œผ๋กœ ๋Œ๋ฆฌ๊ธฐ
	int temp = gears[num].cogs[7];
	for (int i = 7; i > 0; --i)
	{
		gears[num].cogs[i] = gears[num].cogs[i - 1];
	}
	gears[num].cogs[0] = temp;

	// ์™ผ์ชฝ ๋ฐ”ํ€ด ์ƒํ˜ธ์ž‘์šฉ
	if (num - 1 >= 0 && gears[num - 1].cogs[2] != curLeft)
	{
		// ์™ผ์ชฝ ๋ฐ”ํ€ด ๋ฐ˜์‹œ๊ณ„ ๋ฐฉํ–ฅ์œผ๋กœ ๋Œ๋ฆฌ๊ธฐ
		turnLeft(num - 1);
	}

	// ์˜ค๋ฅธ์ชฝ ๋ฐ”ํ€ด ์ƒํ˜ธ์ž‘์šฉ
	if (num + 1 < 4 && gears[num + 1].cogs[6] != curRight)
	{
		// ์˜ค๋ฅธ์ชฝ ๋ฐ”ํ€ด ๋ฐ˜์‹œ๊ณ„ ๋ฐฉํ–ฅ์œผ๋กœ ๋Œ๋ฆฌ๊ธฐ
		turnLeft(num + 1);
	}
}

์™ผ์ชฝ์œผ๋กœ ํšŒ์ „ํ•˜๋Š” ํ•จ์ˆ˜๋„ ์œ„์™€ ๋น„์Šทํ•˜๋‹ค.

void turnLeft(int num)
{
    // ์ด๋ฏธ ๋Œ๋ ค์ง„์ƒํƒœ๋ฉด ๋ฆฌํ„ด
	if (ch[num] == 1)
		return;
    // ์ฒดํฌํ•ด์ฃผ๊ธฐ
	ch[num] = 1;

    // ๋Œ๋ฆฌ๊ธฐ ์ „ 9์‹œ ๋ฐฉํ–ฅ ํ†ฑ๋‹ˆ์˜ ๊ฐ’
	int curLeft = gears[num].cogs[6];
    // ๋Œ๋ฆฌ๊ธฐ ์ „ 3์‹œ ๋ฐฉํ–ฅ ํ†ฑ๋‹ˆ์˜ ๊ฐ’
	int curRight = gears[num].cogs[2];

	// ์™ผ์ชฝ์œผ๋กœ ๋Œ๋ฆฌ๊ธฐ
	int temp = gears[num].cogs[0];
	for (int i = 0; i < 7; ++i)
	{
		gears[num].cogs[i] = gears[num].cogs[i + 1];
	}
	gears[num].cogs[7] = temp;

	// ์™ผ์ชฝ ๋ฐ”ํ€ด ์ƒํ˜ธ์ž‘์šฉ
	if (num - 1 >= 0 && gears[num - 1].cogs[2] != curLeft)
	{
		// ์™ผ์ชฝ ๋ฐ”ํ€ด ์‹œ๊ณ„ ๋ฐฉํ–ฅ์œผ๋กœ ๋Œ๋ฆฌ๊ธฐ
		turnRight(num - 1);
	}

	// ์˜ค๋ฅธ์ชฝ ๋ฐ”ํ€ด ์ƒํ˜ธ์ž‘์šฉ
	if (num + 1 < 4 && gears[num + 1].cogs[6] != curRight)
	{
		// ์˜ค๋ฅธ์ชฝ ๋ฐ”ํ€ด ์‹œ๊ณ„ ๋ฐฉํ–ฅ์œผ๋กœ ๋Œ๋ฆฌ๊ธฐ
		turnRight(num + 1);
	}

}

solve๋Š” ์•„๋ž˜์™€ ๊ฐ™๋‹ค.

void solve()
{
    // ๊ธฐ์–ด ์ƒํƒœ ์ž…๋ ฅ
	for (int i = 0; i < 4; ++i)
	{
		string str;
		cin >> str;
		for (int j = 0; j < str.size(); ++j)
		{
			gears[i].cogs[j] = str[j] - '0';
		}
	}

    // ํ˜„์žฌ ๊ธฐ์–ด ์ƒํƒœ๋ฅผ ๋ณด๊ธฐ์œ„ํ•ด์„œ ๋งŒ๋“  ํ…Œ์ŠคํŠธ ํ•จ์ˆ˜
	//PrintGears();

	int k; // ํšŒ์ „์‹œํ‚ฌ ํšŸ์ˆ˜
	cin >> k;

	int num, dir; // ํšŒ์ „ํ•  ๋ฐ”ํ€ด ๋„˜๋ฒ„์™€ ํšŒ์ „ ๋ฐฉํ–ฅ
	// dir = 1 -> ์‹œ๊ณ„ ๋ฐฉํ–ฅ
	// dir = -1 -> ๋ฐ˜์‹œ๊ณ„ ๋ฐฉํ–ฅ
	for (int i = 0; i < k; ++i)
	{
		cin >> num >> dir;

		VsitedClear();

		if (dir == 1)
		{
			turnRight(num - 1);
		}
		else if (dir == -1)
		{
			turnLeft(num - 1);
		}

        // ํ˜„์žฌ ๊ธฐ์–ด ์ƒํƒœ๋ฅผ ๋ณด๊ธฐ์œ„ํ•ด์„œ ๋งŒ๋“  ํ…Œ์ŠคํŠธ ํ•จ์ˆ˜
		//cout << "[" <<  i + 1 << "]" << endl;
		//PrintGears();
	}

	cout << CheckScore();
}

๐Ÿš€์ „์ฒด ์ฝ”๋“œ

#define _CRT_SECURE_NO_WARNINGS

#include <stdio.h>
#include <string.h>
#include <ctype.h>
#include<iostream>
#include <fstream>
#include <vector>
#include <algorithm>
#include <math.h>

using namespace std;
void turnLeft(int num);
void turnRight(int num);

struct Gear
{
	int cogs[8];
};

Gear gears[4];
// ์ด๋ฏธ ๋Œ๋ ค์กŒ๋Š”์ง€ ์•„๋‹Œ์ง€ ํ™•์ธ์šฉ์ด ํ•„์š”ํ• ๋“ฏ
int ch[4];

void turnRight(int num)
{
	if (ch[num] == 1)
		return;
	ch[num] = 1;

	int curLeft = gears[num].cogs[6];
	int curRight = gears[num].cogs[2];

	// ์˜ค๋ฅธ์ชฝ์œผ๋กœ ๋Œ๋ฆฌ๊ธฐ
	int temp = gears[num].cogs[7];
	for (int i = 7; i > 0; --i)
	{
		gears[num].cogs[i] = gears[num].cogs[i - 1];
	}
	gears[num].cogs[0] = temp;

	// ์™ผ์ชฝ ๋ฐ”ํ€ด ์ƒํ˜ธ์ž‘์šฉ
	if (num - 1 >= 0 && gears[num - 1].cogs[2] != curLeft)
	{
		// ์™ผ์ชฝ ๋ฐ”ํ€ด ๋ฐ˜์‹œ๊ณ„ ๋ฐฉํ–ฅ์œผ๋กœ ๋Œ๋ฆฌ๊ธฐ
		turnLeft(num - 1);
	}

	// ์˜ค๋ฅธ์ชฝ ๋ฐ”ํ€ด ์ƒํ˜ธ์ž‘์šฉ
	if (num + 1 < 4 && gears[num + 1].cogs[6] != curRight)
	{
		// ์˜ค๋ฅธ์ชฝ ๋ฐ”ํ€ด ๋ฐ˜์‹œ๊ณ„ ๋ฐฉํ–ฅ์œผ๋กœ ๋Œ๋ฆฌ๊ธฐ
		turnLeft(num + 1);
	}
}

void turnLeft(int num)
{
	if (ch[num] == 1)
		return;
	ch[num] = 1;

	int curLeft = gears[num].cogs[6];
	int curRight = gears[num].cogs[2];

	// ์™ผ์ชฝ์œผ๋กœ ๋Œ๋ฆฌ๊ธฐ
	int temp = gears[num].cogs[0];
	for (int i = 0; i < 7; ++i)
	{
		gears[num].cogs[i] = gears[num].cogs[i + 1];
	}
	gears[num].cogs[7] = temp;

	// ์™ผ์ชฝ ๋ฐ”ํ€ด ์ƒํ˜ธ์ž‘์šฉ
	if (num - 1 >= 0 && gears[num - 1].cogs[2] != curLeft)
	{
		// ์™ผ์ชฝ ๋ฐ”ํ€ด ์‹œ๊ณ„ ๋ฐฉํ–ฅ์œผ๋กœ ๋Œ๋ฆฌ๊ธฐ
		turnRight(num - 1);
	}

	// ์˜ค๋ฅธ์ชฝ ๋ฐ”ํ€ด ์ƒํ˜ธ์ž‘์šฉ
	if (num + 1 < 4 && gears[num + 1].cogs[6] != curRight)
	{
		// ์˜ค๋ฅธ์ชฝ ๋ฐ”ํ€ด ์‹œ๊ณ„ ๋ฐฉํ–ฅ์œผ๋กœ ๋Œ๋ฆฌ๊ธฐ
		turnRight(num + 1);
	}

}

int CheckScore()
{
	int res = 0;

	if (gears[0].cogs[0] == 1)
		res += 1;
	if (gears[1].cogs[0] == 1)
		res += 2;
	if (gears[2].cogs[0] == 1)
		res += 4;
	if (gears[3].cogs[0] == 1)
		res += 8;
	
	return res;
}

void VsitedClear()
{
	for (int i = 0; i < 4; ++i)
	{
		ch[i] = 0;
	}
}

void PrintGears()
{
	for (int i = 0; i < 4; ++i)
	{
		for (int j = 0; j < 8; ++j)
		{
			cout << gears[i].cogs[j] << " ";
		}
		cout << endl;
	}

	cout << endl;
}

void solve()
{
	for (int i = 0; i < 4; ++i)
	{
		string str;
		cin >> str;
		for (int j = 0; j < str.size(); ++j)
		{
			gears[i].cogs[j] = str[j] - '0';
		}
	}

	//PrintGears();

	int k; // ํšŒ์ „์‹œํ‚ฌ ํšŸ์ˆ˜
	cin >> k;

	int num, dir; // ํšŒ์ „ํ•  ๋ฐ”ํ€ด ๋„˜๋ฒ„์™€ ํšŒ์ „ ๋ฐฉํ–ฅ
	// dir = 1 -> ์‹œ๊ณ„ ๋ฐฉํ–ฅ
	// dir = -1 -> ๋ฐ˜์‹œ๊ณ„ ๋ฐฉํ–ฅ
	for (int i = 0; i < k; ++i)
	{
		cin >> num >> dir;

		VsitedClear();

		if (dir == 1)
		{
			turnRight(num - 1);
		}
		else if (dir == -1)
		{
			turnLeft(num - 1);
		}

		//cout << "[" <<  i + 1 << "]" << endl;
		//PrintGears();
	}

	cout << CheckScore();
}

int main()
{
	ios_base::sync_with_stdio(false);
	cin.tie(NULL);
	cout.tie(NULL);
	//freopen("input.txt", "rt", stdin);

	solve();

	return 0;
}

ํƒœ๊ทธ:

์นดํ…Œ๊ณ ๋ฆฌ:

์—…๋ฐ์ดํŠธ: