Jae-Kyung Cho LLM Developers who was a Robotics engineer

Baekjoon-14891-톱니바퀴

gears = [[int(c) for c in input().strip()] for _ in range(4)]

class Gear:
    def __init__(self, gears):
        self.status = gears # 2,6 index: right, left, # N극-0, S극-1
        self.heads = [0,0,0,0]
    
    def rot(self, i, dirs):
        # i번째 톱니바퀴 dirs 방향으로 회전
        self.heads[i] = (self.heads[i] - dirs) % 8
    
    def turn(self,i,dirs):
        # start from i
        turns = [[i,dirs]]
        for left,right in zip(range(i,3),range(i+1,4)):
            if self.status[left][(self.heads[left]+2)%8] != self.status[right][(self.heads[right]-2)%8]:
                turns.append([right,dirs*(-1)**(right-i)])
            else:
                break
        for left,right in zip(reversed(range(i)),reversed(range(1,i+1))):
            if self.status[left][(self.heads[left]+2)%8] != self.status[right][(self.heads[right]-2)%8]:
                turns.append([left,dirs*(-1)**(i-left)])
            else:
                break
        for j,d in turns:
            self.rot(j,d)
    
    def print(self):
        result = 0
        for i in range(4):
            result += (2**i) * self.status[i][self.heads[i]]
        print(result)

gear = Gear(gears)
K = int(input())
turns = []
for _ in range(K):
    i,dirs = list(map(int,input().split()))
    turns.append([i-1,dirs])
for i,dirs in turns:
    gear.turn(i,dirs)
gear.print()

Comments