본문 바로가기
백준

[python] 14891. 톱니바퀴

by DylanMsK 2019. 7. 24.

문제 출처

14891. 톱니바퀴

 

풀이


gears = []
for _ in range(4):
    gears.append(list(input()))
K = int(input())
cmds = [list(map(int, input().split())) for _ in range(K)]

def rotation(n, d):
    global gears

    if d == 1:
        gears[n] = [gears[n][-1]] + gears[n][:-1]
    else:
        gears[n] = gears[n][1:] + [gears[n][0]]

while cmds:
    n, d = cmds.pop(0)
    n -= 1

    right, left = gears[n][2], gears[n][6]
    rotation(n, d)
    for idx, nxt in enumerate(range(n+1, 4)):
        if right != gears[nxt][6]:
            right = gears[nxt][2]
            if idx % 2:
                rotation(nxt, d)
            else:
                rotation(nxt, -d)
        else:
            break

    for idx, nxt in enumerate(range(n-1, -1, -1)):
        if left != gears[nxt][2]:
            left = gears[nxt][6]
            if idx % 2:
                rotation(nxt, d)
            else:
                rotation(nxt, -d)
        else:
            break

tot = [2**i for i in range(4) if gears[i][0] == '1']
print(sum(tot))

'백준' 카테고리의 다른 글

[python] 17140. 이차원 배열과 연산  (0) 2019.07.24
[python] 3190. 뱀  (0) 2019.07.24
[python] 15685. 드래곤 커브  (0) 2019.07.24
[python] 14888. 연산자 끼워넣기  (1) 2019.07.24
[python] 15683. 감시  (0) 2019.07.24