톱니바퀴

시간 제한2초메모리 제한512 MB

요약
기어를 K번 돌리는데, 지정된 기어가 회전하며 맞닿은 극이 다르면 옆 기어로 회전이 전파된다. 모든 회전이 끝난 뒤 네 기어의 12시 톱니로 점수를 계산해 출력한다.
난이도

보통10점 중 4점

유형
구현, 시뮬레이션, 배열
정답자
아직 제출이 없습니다

문제

톱니를 8개씩 가진 톱니바퀴 4개가 아래 그림처럼 일렬로 놓여 있다. 톱니 하나하나는 N극 또는 S극이다. 가장 왼쪽 톱니바퀴가 1번이고 오른쪽으로 가면서 차례대로 2번, 3번, 4번이다.

일렬로 놓인 톱니바퀴 4개

이제 톱니바퀴를 K번 회전시킨다. 한 번의 회전은 톱니 한 칸만큼 돌리는 것이고, 방향은 시계 방향과 반시계 방향 두 가지다.

시계 방향으로 한 칸 회전한 모습

반시계 방향으로 한 칸 회전한 모습

회전할 때마다 회전시킬 톱니바퀴의 번호와 방향을 정한다. 이웃한 두 톱니바퀴에서 맞닿는 톱니는 왼쪽 톱니바퀴의 3시 방향 톱니와 오른쪽 톱니바퀴의 9시 방향 톱니다. 톱니바퀴 A가 회전할 때 이웃한 톱니바퀴 B와 맞닿은 두 톱니의 극이 다르면 B는 A와 반대 방향으로 회전한다. 두 극이 같으면 B는 회전하지 않고, B가 회전하지 않으면 B 너머의 톱니바퀴도 회전하지 않는다. 맞닿은 극을 비교하는 기준은 이번 회전이 시작되기 직전의 상태다.

아래 상태를 예로 들어 보자.

3번 톱니바퀴를 돌리기 전의 상태

맞닿은 부분은 초록색 점선으로 묶여 있다. 여기서 3번 톱니바퀴를 반시계 방향으로 회전시키면 4번 톱니바퀴는 시계 방향으로 회전한다. 2번 톱니바퀴는 3번과 맞닿은 극이 둘 다 S극이라 회전하지 않고, 2번이 회전하지 않으니 1번도 회전하지 않는다. 그래서 아래 모양이 된다.

3번 톱니바퀴를 돌린 뒤의 상태

이 상태에서 1번 톱니바퀴를 시계 방향으로 회전시키면 2번 톱니바퀴가 반시계 방향으로 회전하고, 2번이 회전하므로 3번도 같이 시계 방향으로 회전한다. 4번은 3번과 맞닿은 극이 같아서 회전하지 않는다. 그래서 아래 모양이 된다.

1번 톱니바퀴를 돌린 뒤의 상태

톱니바퀴의 초기 상태와 회전시킨 방법이 주어진다. 회전을 모두 끝낸 뒤의 점수 합을 구하는 프로그램을 작성하시오.

입력

첫째 줄부터 넷째 줄까지 1번, 2번, 3번, 4번 톱니바퀴의 상태가 한 줄에 하나씩 주어진다. 각 상태는 0과 1로만 이루어진 8자리 문자열이고, 12시 방향 톱니부터 시계 방향 순서다. N극은 0, S극은 1이다.

다섯째 줄에 회전 횟수 KK가 주어진다 (1≤K≤1001 \le K \le 100).

다음 KK개 줄에는 회전시킨 방법이 순서대로 주어진다. 각 줄은 정수 두 개로 이루어진다. 첫 번째 정수는 회전시킨 톱니바퀴의 번호 xx (1≤x≤41 \le x \le 4), 두 번째 정수는 방향이다. 방향이 1이면 시계 방향, -1이면 반시계 방향이다.

출력

KK번의 회전을 모두 끝낸 뒤 네 톱니바퀴의 점수 합을 한 줄에 출력한다. 점수는 다음과 같이 계산한다.

  • 1번 톱니바퀴의 12시 방향이 N극이면 0점, S극이면 1점
  • 2번 톱니바퀴의 12시 방향이 N극이면 0점, S극이면 2점
  • 3번 톱니바퀴의 12시 방향이 N극이면 0점, S극이면 4점
  • 4번 톱니바퀴의 12시 방향이 N극이면 0점, S극이면 8점

예제4

  1. 예제 1

    입력
    10101111
    01111101
    11001110
    00000010
    2
    3 -1
    1 1
    
    예상 출력
    7
    
  2. 예제 2

    입력
    11111111
    11111111
    11111111
    11111111
    3
    1 1
    2 1
    3 1
    
    예상 출력
    15
    
  3. 예제 3

    입력
    10001011
    10000011
    01011011
    00111101
    5
    1 1
    2 1
    3 1
    4 1
    1 -1
    
    예상 출력
    6
    
  4. 예제 4

    입력
    10010011
    01010011
    11100011
    01010101
    8
    1 1
    2 1
    3 1
    4 1
    1 -1
    2 -1
    3 -1
    4 -1
    
    예상 출력
    5