본문 바로가기

알고리즘/백준 (Pyhthon)

[알고리즘] 백준 14891 톱니바퀴 / python

 

www.acmicpc.net/problem/14891

 

14891번: 톱니바퀴

총 8개의 톱니를 가지고 있는 톱니바퀴 4개가 아래 그림과 같이 일렬로 놓여져 있다. 또, 톱니는 N극 또는 S극 중 하나를 나타내고 있다. 톱니바퀴에는 번호가 매겨져 있는데, 가장 왼쪽 톱니바퀴

www.acmicpc.net

 

def rotate(t_num, t_dir):
    T[t_num] = T[t_num][t_dir*-1:] + T[t_num][:t_dir*-1]

def left(t_num, t_dir):
    if t_num == -1 or T[t_num][2] == T[t_num+1][6] :
        return
    left(t_num-1, t_dir*-1)
    rotate(t_num, t_dir)

def right(t_num, t_dir):
    if t_num == 4 or T[t_num][6] == T[t_num-1][2]:
        return
    right(t_num+1, t_dir*-1)
    rotate(t_num, t_dir)

T = [list(map(int, input())) for _ in range(4)]
K = int(input())

for _ in range(K):
    t_num, t_dir = map(int, input().split(' '))
    if t_num > 1 and T[t_num-1][6] != T[t_num-2][2]:    
        left(t_num-2, t_dir*-1)
    if t_num < 4 and T[t_num-1][2] != T[t_num][6]:
        right(t_num, t_dir*-1)
    rotate(t_num-1, t_dir)

score = 0
for i in range(len(T)):
    if T[i][0] == 1:
        score += 2 ** i
print(score)