ํ์ด
์ด ๋ฌธ์ ์ ๊ตฌํ์ฌํญ์ ํฌ๊ฒ ๋๊ฐ์ง๋ค.
-
ํ์ ์ํฌ ํฑ๋๋ฐํด์ ์ข์ธก๊ณผ ์ฐ์ธก์ ๋ฐฐ์น๋ ํฑ๋๋ฐํด์ ํ์ ์ ๋ฌด ํ๋จ.
-
ํ์ ๋ฐฉํฅ์ ๋ฐ๋ฅธ ํฑ๋์ํ ์ ๋ฐ์ดํธ.
ํ์ ์ํฌ ํฑ๋์ ๋ฐฉํฅ์ด ์ฃผ์ด์ก์๋, ์ฐ์ ์ ์ผ๋ก ์ ์์ ์๋ ํฑ๋๋ฐํด๋ค์ด ์ํฅ์ ๋ฐ๋์ง ์์๋ด์ผํ๋ค.
์ข์ธก๊ณผ ์ฐ์ธก์ ๋๋์ด ๋ง๋ฌผ๋ฆฌ๋ ํฑ๋๊ฐ ์๋ก ์ํฅ์ ์ค๋ค๋ฉด ๊ทธ ํฑ๋๋ฐํด ์ญ์ ํ์ ํ๋ค๋ ์ ๋ณด๋ฅผ ์ ์ฅํ๋ค.
ํ์ ํ ํฑ๋๋ฐํด์ ๊ทธ ๋ฐฉํฅ์ ์ ๋ณด๋ฅผ ๋ชจ๋ ์ข ํฉํ ํ ํ์ ๋ฐฉํฅ์ ๋ฐ๋ผ ํฑ๋๋ฐํด๋ค์ ํ์ ์ํค๋ฉด๋๋ค.
์ดํ ์ถ๋ ฅ์กฐ๊ฑด์ ๋ง๊ฒ ์ ๋ต์ ๊ณ์ฐํ์ฌ ์ถ๋ ฅํด์ฃผ๋ฉด๋๋ค.
์์ค์ฝ๋
import sys
input = sys.stdin.readline
def rotate(gn, r):
gn -= 1
rotation = [0 for _ in range(4)]
direction = [0 for _ in range(4)]
rotation[gn] = 1
direction[gn] = r
# ๊ธฐ์ค ํฑ๋๋ฐํด๋ก๋ถํฐ ์ฐ์ธก
for i in range(gn, 3):
if gears[i][2] != gears[i + 1][6]:
rotation[i + 1] = 1
direction[i + 1] = -direction[i]
else:
break
# ๊ธฐ์ค ํฑ๋๋ฐํด๋ก๋ถํฐ ์ข์ธก
for i in range(gn, 0, -1):
if gears[i][6] != gears[i - 1][2]:
rotation[i - 1] = 1
direction[i - 1] = -direction[i]
else:
break
# ํ์ ๋ฐฉํฅ์ ๋ฐ๋ผ ํฑ๋๋ฐํด ํ์
for i in range(4):
if rotation[i] == 1:
if direction[i] == 1:
g = gears[i].pop()
gears[i].insert(0, g)
else:
g = gears[i].pop(0)
gears[i].append(g)
gears = [[int(i) for i in input().rstrip()] for _ in range(4)]
K = int(input())
for _ in range(K):
gn, r = map(int, input().split())
rotate(gn, r)
ans = 0
for i in range(4):
if gears[i][0] == 1:
ans += 2**i
print(ans)