ν°μ€ν 리 λ·°
λ¬Έμ
λ¬Έμ νμ΄
λ¬Έμ μλ 4κ°μ ν±λλ°ν΄μ λν μνκ° Nκ·ΉμΈ κ²½μ° 0, Sκ·ΉμΈ κ²½μ° 1λ‘ μ£Όμ΄μ§λ€. νλμ ν±λλ°ν΄λ₯Ό νμ ν λ, μκ³λ°©ν₯ λλ λ°μκ³ λ°©ν₯μΌλ‘ νμ ν μ μκ³ νμ νκ³ μ νλ ν±λλ°ν΄μ μΈμ ν ν±λλ°ν΄λ κ·Ήμ΄ λ€λ₯Έ κ²½μ° μν₯μ λ°κ² λλ€. μ΄λ, νμ ν ν±λλ°ν΄μλ λ°λ λ°ν₯μΌλ‘ νμ νλ νΉμ§μ κ°μ§κ³ μλ€. μ΄λ₯Ό κ³ λ €νμ¬ λ‘μ§μ ꡬννλ©΄ μ½κ² ν΄κ²°ν μ μλ λ¬Έμ μ΄λ€.
νλμ ν±λλ°ν΄λ₯Ό νμ μν€λ©΄ μ’μΈ‘, μ°μΈ‘μ μ°μμ μΌλ‘ μμ©νλ€. λ°λΌμ μ νλ ν±λλ°ν΄μ μ’μ°μΈ‘μ ν±λλ°ν΄λ€μ΄ νμ νλ€λ©΄, νμ ν ν±λλ°ν΄μ μ’μΈ‘ λλ μ°μΈ‘λ λͺ¨λ νμΈνμ¬μΌ νλ€.
μ½λ
from sys import stdin
from collections import deque
def move_gear(idx, cur_dir):
global cur_right, cur_left, gears
origin_dir = cur_dir
# νμ¬ ν±λλ°ν΄λ₯Ό κΈ°μ€μΌλ‘ μ’μΈ‘μ ν±λλ°ν΄λ€ νμΈ.
for i in reversed(range(idx)):
if cur_right != gears[i][LEFT]:
cur_right = gears[i][RIGHT]
gears[i].rotate(cur_dir * -1)
cur_dir *= -1
else:
break
cur_dir = origin_dir
# νμ¬ ν±λλ°ν΄λ₯Ό κΈ°μ€μΌλ‘ μ°μΈ‘μ ν±λλ°ν΄λ€ νμΈ.
for i in range(idx + 1, 4):
if gears[i][RIGHT] != cur_left:
cur_left = gears[i][LEFT]
gears[i].rotate(cur_dir * -1)
cur_dir *= -1
else:
break
if __name__ == '__main__':
LEFT, RIGHT = 2, 6
gears = [deque(map(int, stdin.readline().strip())) for _ in range(4)]
k = int(stdin.readline())
orders = [list(map(int, stdin.readline().split())) for _ in range(k)]
for gear_idx, direction in orders:
gear_idx -= 1
cur_left, cur_right = gears[gear_idx][LEFT], gears[gear_idx][RIGHT]
gears[gear_idx].rotate(direction)
move_gear(gear_idx, direction)
print(sum([2 ** delta if gear[0] else 0 for delta, gear in enumerate(gears)]))
μ²μμλ rotationνλ ν¨μλ₯Ό μμ±νμλλ°, dequeλ₯Ό νμ©νλ©΄ rotateν¨μκ° μμ΄ μ΄λ₯Ό ꡬνν νμκ° μλ€λ κ±Έ μ²μ μμλ€.π λ°λ³΅λ¬Έμ ν΅ν΄ μ°μμ μΌλ‘ μν₯μ λ―ΈμΉλ ν±λλ°ν΄κΉμ§ νμ νκ² λλ©΄ μ λ΅μ΄λΌλ 문ꡬλ₯Ό λ³Ό μ μλ€.
'π¨βπ» μ½λ©ν μ€νΈ > λ°±μ€' μΉ΄ν κ³ λ¦¬μ λ€λ₯Έ κΈ
λ°±μ€: 3568 iSharp (0) | 2020.09.24 |
---|---|
λ°±μ€: 15662 ν±λλ°ν΄ (2) (0) | 2020.09.23 |
λ°±μ€: 14499 μ£Όμ¬μ ꡴리기 (0) | 2020.09.23 |
λ°±μ€: 14890 κ²½μ¬λ‘ (0) | 2020.09.22 |
λ°±μ€: 3190 λ± (0) | 2020.09.21 |