import java.util.ArrayList;
import java.util.Scanner;
public class Main {
public static void main(String args[]) {
Scanner scan = new Scanner(System.in);
ArrayList<Integer>[] list = new ArrayList[4];
for(int i = 0; i<4; i++) {
String s = scan.nextLine();
String[] str = s.split("");
list[i] = new ArrayList<Integer>();
for(int j = 0; j<8; j++) {
list[i].add(Integer.parseInt(str[j]));
}
}
int k = scan.nextInt();
for(int i = 0; i<k; i++) {
int n = scan.nextInt();
int d = scan.nextInt();
rotate(d, list, n-1);
}
scan.close();
int count = 0;
for(int i = 0; i<4; i++) {
if(list[i].get(0) == 1) {
count += Math.pow(2, i);
}
}
System.out.println(count);
}
public static void rotate(int d, ArrayList<Integer>[] list, int n) {
int pre = list[n].get(2);
int pre2 = list[n].get(6);
int tmp = d;
for(int i = n+1; i<4; i++) {
if(pre == list[i].get(6)) {
break;
}
else {
pre = list[i].get(2); //새로운 톱니
if(d == -1) {
int t = list[i].get(7); //마지막 제거
list[i].remove(7);
list[i].add(0, t); //0에 부착
d = 1;
}
else {
int t = list[i].get(0); //0제거
list[i].remove(0);
list[i].add(t); //마지막에 부착
d = -1;
}
}
}
d = tmp;
for(int i = n-1; i>-1; i--) {
if(pre2 == list[i].get(2)) {
break;
}
else {
pre2 = list[i].get(6);
if( d == -1 ) {
int t = list[i].get(7); //마지막 제거
list[i].remove(7);
list[i].add(0, t); //0에 부착
d = 1;
}
else {
int t = list[i].get(0); //0제거
list[i].remove(0);
list[i].add(t); //마지막에 부착
d = -1;
}
}
}
if(tmp == -1) {
int t = list[n].get(0);
list[n].remove(0);
list[n].add(t);
}
else {
int t = list[n].get(7);
list[n].remove(7);
list[n].add(0, t);
}
}
}
톱니바퀴 돌리는 것을 list화 해서 첫번째와 마지막 요소만 바꿔주면 된다.
'알고리즘 > 백준' 카테고리의 다른 글
[BaekJoon] 백준 2775. 부녀회장이 될테야 (0) | 2020.09.14 |
---|---|
[BaekJoon] 14899 백준 스타트와 링크 (0) | 2020.06.04 |
[BaekJoon] 백준 14890 경사로 (0) | 2020.05.30 |
[BaekJoon] 14888 백준 연산자 끼워넣기 (0) | 2020.05.27 |
[BaekJoon] 백준 14503 로봇청소기 - Java (0) | 2020.05.25 |