출처 : https://www.acmicpc.net/problem/14891
In [1]:
from collections import deque
In [2]:
array_1 = deque(map(int, input())) ## 1번 톱니바퀴
array_2 = deque(map(int, input())) ## 2번 톱니바퀴
array_3 = deque(map(int, input())) ## 3번 톱니바퀴
array_4 = deque(map(int, input())) ## 4번 톱니바퀴
In [3]:
## K번 반복
for _ in range(int(input())):
## n번 톱니바퀴를 d방향으로 회전시려고 한다.
## d=1이면 시계방향이므로 rotate(1)을 하면 되고
## d=-1이면 반시계방향이므로 rotate(-1)을 하면 된다.
n, d = map(int, input().split())
d_array = deque([d])
## 1번 톱니바퀴를 회전시킨다.
if n==1:
## 1번 2번 톱니바퀴의 맞닿은 극이 서로 다르다.
if array_1[2] != array_2[6]:
d_array.append(-d)
## 2번 3번 극이 서로 다르다.
if array_2[2] != array_3[6]:
d_array.append(d)
## 3번 4번 극이 서로 다르다.
if array_3[2] != array_4[6]:
d_array.append(-d)
## 3번 4번 극이 서로 같다.
else:
d_array.append(0)
## 2번 3번 극이 서로 같다.
else:
d_array.append(0)
d_array.append(0)
## 1번 2번 톱니바퀴의 맞닿은 극이 서로 같다.
else:
d_array.append(0)
d_array.append(0)
d_array.append(0)
## 2번 톱니바퀴를 회전시킨다.
elif n==2:
## 1번 2번 극이 서로 다르다.
if array_1[2] != array_2[6]:
d_array.appendleft(-d)
## 1번 2번 극이 서로 같다.
else:
d_array.appendleft(0)
## 2번 3번 극이 서로 다르다.
if array_2[2] != array_3[6]:
d_array.append(-d)
## 3번 4번 극이 서로 다르다.
if array_3[2] != array_4[6]:
d_array.append(d)
## 3번 4번 극이 서로 같다.
else:
d_array.append(0)
## 2번 3번 극이 서로 같다.
else:
d_array.append(0)
d_array.append(0)
## 3번 톱니바퀴를 회전시킨다.
elif n==3:
## 2번 3번 극이 서로 다르다.
if array_2[2] != array_3[6]:
d_array.appendleft(-d)
## 1번 2번 극이 서로 다르다.
if array_1[2] != array_2[6]:
d_array.appendleft(d)
## 1번 2번 극이 서로 같다.
else:
d_array.appendleft(0)
## 2번 3번 극이 서로 같다.
else:
d_array.appendleft(0)
d_array.appendleft(0)
## 3번 4번 극이 서로 다르다.
if array_3[2] != array_4[6]:
d_array.append(-d)
## 3번 4번 극이 서로 같다.
else:
d_array.append(0)
## 4번 톱니바퀴를 회전시킨다.
else:
## 3번 4번 극이 서로 다르다.
if array_3[2] != array_4[6]:
d_array.appendleft(-d)
## 2번 3번 극이 서로 다르다.
if array_2[2] != array_3[6]:
d_array.appendleft(d)
## 1번 2번 극이 서로 다르다.
if array_1[2] != array_2[6]:
d_array.appendleft(-d)
## 1번 2번 극이 서로 같다.
else:
d_array.appendleft(0)
## 2번 3번 극이 서로 같다.
else:
d_array.appendleft(0)
d_array.appendleft(0)
## 3번 4번 극이 서로 같다.
else:
d_array.appendleft(0)
d_array.appendleft(0)
d_array.appendleft(0)
## 톱니바퀴를 각자의 방향으로 회전시켜라
array_1.rotate(d_array[0])
array_2.rotate(d_array[1])
array_3.rotate(d_array[2])
array_4.rotate(d_array[3])
In [4]:
## (S극 = 1로 표현되어 있다.)
## 1번 톱니바퀴의 12시방향이 S극이면 1점
## 2번 톱니바퀴의 12시방향이 S극이면 2점
## 3번 톱니바퀴의 12시방향이 S극이면 4점
## 4번 톱니바퀴의 12시방향이 S극이면 8점
return_sum = 0
if array_1[0] == 1:
return_sum = return_sum + 1
if array_2[0] == 1:
return_sum = return_sum + 2
if array_3[0] == 1:
return_sum = return_sum + 4
if array_4[0] == 1:
return_sum = return_sum + 8
In [5]:
print(return_sum)
'알고리즘 > [Python] 백준' 카테고리의 다른 글
(Python) 백준 15683번 : 감시 (0) | 2020.02.12 |
---|---|
(Python) 백준 14889번 : 스타트와 링크 (0) | 2020.02.12 |
(Python) 백준 5397번 : 키로거 (0) | 2020.02.06 |
(Python) 백준 1057번 : 토너먼트 (0) | 2020.02.06 |
(Python) 백준 1021번 : 회전하는 큐 (0) | 2020.02.06 |