[백준] q14891 톱니바퀴
문제
네 톱니바퀴의 상태가 주어진다. N극은 0, S극은 1로 나타나있다. 그리고 주어진 회전 횟수 K만큼 회전시킨 톱니바퀴의 번호와 방향이 주어진다. 방향이 1인 경우는 시계 방향이고, -1인 경우는 반시계 방향이다.
톱니바퀴 A가 회전할 때, 그 옆에 있는 톱니바퀴 B와 맞닿는 톱니의 극이 다르다면, 톱니바퀴 A와 반대방향으로 톱니바퀴 B를 회전한다.
총 K번 회전시킨 이후에 네 톱니바퀴의 점수의 합을 계산하여 출력하라.
어떻게 풀 것인가?
톱니바퀴 A를 회전시킬 때, 나올 수 있는 모든 경우의 수를 if 조건문으로 구현한다.
def rotate_clockwise(arr): # 톱니바퀴 시계 방향 회전
# (arr)
arr.insert(0, arr.pop())
# print(arr)
def rotate_counterclockwise(arr): # 톱니바퀴 반시계 방향 회전
# print(arr)
arr.append(arr.pop(0))
# print(arr)
# 입력
arr_1 = list(input()) # 1번 톱니바퀴
arr_2 = list(input()) # 2번 톱니바퀴
arr_3 = list(input()) # 3번 톱니바퀴
arr_4 = list(input()) # 4번 톱니바퀴
k = int(input()) # 회전 횟수
rotation_seq = []
for _ in range(k):
num, direc = map(int, input().split()) # 회전시킨 톱니바퀴의 번호, 방향(1: 시계 방향, -1: 반시계 방향)
rotation_seq.append([num, direc])
for i in range(k):
if rotation_seq[i][0] == 1: # 1번 톱니바퀴
if rotation_seq[i][1] == 1: # 시계 방향 회전
if arr_1[2] != arr_2[6] and arr_2[2] != arr_3[6] and arr_3[2] != arr_4[6]:
rotate_clockwise(arr_1)
rotate_counterclockwise(arr_2)
rotate_clockwise(arr_3)
rotate_counterclockwise(arr_4)
elif arr_1[2] == arr_2[6] and arr_2[2] != arr_3[6] and arr_3[2] != arr_4[6]:
rotate_clockwise(arr_1)
elif arr_1[2] != arr_2[6] and arr_2[2] == arr_3[6] and arr_3[2] != arr_4[6]:
rotate_clockwise(arr_1)
rotate_counterclockwise(arr_2)
elif arr_1[2] != arr_2[6] and arr_2[2] != arr_3[6] and arr_3[2] == arr_4[6]:
rotate_clockwise(arr_1)
rotate_counterclockwise(arr_2)
rotate_clockwise(arr_3)
elif arr_1[2] == arr_2[6] and arr_2[2] == arr_3[6] and arr_3[2] != arr_4[6]:
rotate_clockwise(arr_1)
elif arr_1[2] == arr_2[6] and arr_2[2] != arr_3[6] and arr_3[2] == arr_4[6]:
rotate_clockwise(arr_1)
elif arr_1[2] != arr_2[6] and arr_2[2] == arr_3[6] and arr_3[2] == arr_4[6]:
rotate_clockwise(arr_1)
rotate_counterclockwise(arr_2)
else: # arr_1[2] == arr_2[6] and arr_2[2] == arr_3[6] and arr_3[2] == arr_4[6]
rotate_clockwise(arr_1)
else: # 반시계 방향 회전
if arr_1[2] != arr_2[6] and arr_2[2] != arr_3[6] and arr_3[2] != arr_4[6]:
rotate_counterclockwise(arr_1)
rotate_clockwise(arr_2)
rotate_counterclockwise(arr_3)
rotate_clockwise(arr_4)
elif arr_1[2] == arr_2[6] and arr_2[2] != arr_3[6] and arr_3[2] != arr_4[6]:
rotate_counterclockwise(arr_1)
elif arr_1[2] != arr_2[6] and arr_2[2] == arr_3[6] and arr_3[2] != arr_4[6]:
rotate_counterclockwise(arr_1)
rotate_clockwise(arr_2)
elif arr_1[2] != arr_2[6] and arr_2[2] != arr_3[6] and arr_3[2] == arr_4[6]:
rotate_counterclockwise(arr_1)
rotate_clockwise(arr_2)
rotate_counterclockwise(arr_3)
elif arr_1[2] == arr_2[6] and arr_2[2] == arr_3[6] and arr_3[2] != arr_4[6]:
rotate_counterclockwise(arr_1)
elif arr_1[2] == arr_2[6] and arr_2[2] != arr_3[6] and arr_3[2] == arr_4[6]:
rotate_counterclockwise(arr_1)
elif arr_1[2] != arr_2[6] and arr_2[2] == arr_3[6] and arr_3[2] == arr_4[6]:
rotate_counterclockwise(arr_1)
rotate_clockwise(arr_2)
else: # arr_1[2] == arr_2[6] and arr_2[2] == arr_3[6] and arr_3[2] == arr_4[6]
rotate_counterclockwise(arr_1)
elif rotation_seq[i][0] == 2: # 2번 톱니바퀴 회전
if rotation_seq[i][1] == 1: # 시계 방향 회전
if arr_1[2] != arr_2[6] and arr_2[2] != arr_3[6] and arr_3[2] != arr_4[6]:
rotate_clockwise(arr_2)
rotate_counterclockwise(arr_1)
rotate_counterclockwise(arr_3)
rotate_clockwise(arr_4)
elif arr_1[2] == arr_2[6] and arr_2[2] != arr_3[6] and arr_3[2] != arr_4[6]:
rotate_clockwise(arr_2)
rotate_counterclockwise(arr_3)
rotate_clockwise(arr_4)
elif arr_1[2] != arr_2[6] and arr_2[2] == arr_3[6] and arr_3[2] != arr_4[6]:
rotate_clockwise(arr_2)
rotate_counterclockwise(arr_1)
elif arr_1[2] != arr_2[6] and arr_2[2] != arr_3[6] and arr_3[2] == arr_4[6]:
rotate_clockwise(arr_2)
rotate_counterclockwise(arr_3)
rotate_counterclockwise(arr_1)
elif arr_1[2] == arr_2[6] and arr_2[2] == arr_3[6] and arr_3[2] != arr_4[6]:
rotate_clockwise(arr_2)
elif arr_1[2] == arr_2[6] and arr_2[2] != arr_3[6] and arr_3[2] == arr_4[6]:
rotate_clockwise(arr_2)
rotate_counterclockwise(arr_3)
elif arr_1[2] != arr_2[6] and arr_2[2] == arr_3[6] and arr_3[2] == arr_4[6]:
rotate_clockwise(arr_2)
rotate_counterclockwise(arr_1)
else: # arr_1[2] == arr_2[6] and arr_2[2] == arr_3[6] and arr_3[2] == arr_4[6]
rotate_clockwise(arr_2)
else: # 반시계 방향 회전
if arr_1[2] != arr_2[6] and arr_2[2] != arr_3[6] and arr_3[2] != arr_4[6]:
rotate_counterclockwise(arr_2)
rotate_clockwise(arr_1)
rotate_clockwise(arr_3)
rotate_counterclockwise(arr_4)
elif arr_1[2] == arr_2[6] and arr_2[2] != arr_3[6] and arr_3[2] != arr_4[6]:
rotate_counterclockwise(arr_2)
rotate_clockwise(arr_3)
rotate_counterclockwise(arr_4)
elif arr_1[2] != arr_2[6] and arr_2[2] == arr_3[6] and arr_3[2] != arr_4[6]:
rotate_counterclockwise(arr_2)
rotate_clockwise(arr_1)
elif arr_1[2] != arr_2[6] and arr_2[2] != arr_3[6] and arr_3[2] == arr_4[6]:
rotate_counterclockwise(arr_2)
rotate_clockwise(arr_3)
rotate_clockwise(arr_1)
elif arr_1[2] == arr_2[6] and arr_2[2] == arr_3[6] and arr_3[2] != arr_4[6]:
rotate_counterclockwise(arr_2)
elif arr_1[2] == arr_2[6] and arr_2[2] != arr_3[6] and arr_3[2] == arr_4[6]:
rotate_counterclockwise(arr_2)
rotate_clockwise(arr_3)
elif arr_1[2] != arr_2[6] and arr_2[2] == arr_3[6] and arr_3[2] == arr_4[6]:
rotate_counterclockwise(arr_2)
rotate_clockwise(arr_1)
else: # arr_1[2] == arr_2[6] and arr_2[2] == arr_3[6] and arr_3[2] == arr_4[6]
rotate_counterclockwise(arr_2)
elif rotation_seq[i][0] == 3: # 3번 톱니바퀴 회전
if rotation_seq[i][1] == 1: # 시계 방향 회전
if arr_1[2] != arr_2[6] and arr_2[2] != arr_3[6] and arr_3[2] != arr_4[6]:
rotate_clockwise(arr_3)
rotate_counterclockwise(arr_2)
rotate_counterclockwise(arr_4)
rotate_clockwise(arr_1)
elif arr_1[2] == arr_2[6] and arr_2[2] != arr_3[6] and arr_3[2] != arr_4[6]:
rotate_clockwise(arr_3)
rotate_counterclockwise(arr_2)
rotate_counterclockwise(arr_4)
elif arr_1[2] != arr_2[6] and arr_2[2] == arr_3[6] and arr_3[2] != arr_4[6]:
rotate_clockwise(arr_3)
rotate_counterclockwise(arr_4)
elif arr_1[2] != arr_2[6] and arr_2[2] != arr_3[6] and arr_3[2] == arr_4[6]:
rotate_clockwise(arr_3)
rotate_counterclockwise(arr_2)
rotate_clockwise(arr_1)
elif arr_1[2] == arr_2[6] and arr_2[2] == arr_3[6] and arr_3[2] != arr_4[6]:
rotate_clockwise(arr_3)
rotate_counterclockwise(arr_4)
elif arr_1[2] == arr_2[6] and arr_2[2] != arr_3[6] and arr_3[2] == arr_4[6]:
rotate_clockwise(arr_3)
rotate_counterclockwise(arr_2)
elif arr_1[2] != arr_2[6] and arr_2[2] == arr_3[6] and arr_3[2] == arr_4[6]:
rotate_clockwise(arr_3)
else:
rotate_clockwise(arr_3)
else: # 반시계 방향 회전
if arr_1[2] != arr_2[6] and arr_2[2] != arr_3[6] and arr_3[2] != arr_4[6]:
rotate_counterclockwise(arr_3)
rotate_clockwise(arr_2)
rotate_clockwise(arr_4)
rotate_counterclockwise(arr_1)
elif arr_1[2] == arr_2[6] and arr_2[2] != arr_3[6] and arr_3[2] != arr_4[6]:
rotate_counterclockwise(arr_3)
rotate_clockwise(arr_2)
rotate_clockwise(arr_4)
elif arr_1[2] != arr_2[6] and arr_2[2] == arr_3[6] and arr_3[2] != arr_4[6]:
rotate_counterclockwise(arr_3)
rotate_clockwise(arr_4)
elif arr_1[2] != arr_2[6] and arr_2[2] != arr_3[6] and arr_3[2] == arr_4[6]:
rotate_counterclockwise(arr_3)
rotate_clockwise(arr_2)
rotate_counterclockwise(arr_1)
elif arr_1[2] == arr_2[6] and arr_2[2] == arr_3[6] and arr_3[2] != arr_4[6]:
rotate_counterclockwise(arr_3)
rotate_clockwise(arr_4)
elif arr_1[2] == arr_2[6] and arr_2[2] != arr_3[6] and arr_3[2] == arr_4[6]:
rotate_counterclockwise(arr_3)
rotate_clockwise(arr_2)
elif arr_1[2] != arr_2[6] and arr_2[2] == arr_3[6] and arr_3[2] == arr_4[6]:
rotate_counterclockwise(arr_3)
else:
rotate_counterclockwise(arr_3)
else: # 4번 톱니바퀴 회전
if rotation_seq[i][1] == 1: # 시계 방향 회전
if arr_1[2] != arr_2[6] and arr_2[2] != arr_3[6] and arr_3[2] != arr_4[6]:
rotate_clockwise(arr_4)
rotate_counterclockwise(arr_3)
rotate_clockwise(arr_2)
rotate_counterclockwise(arr_1)
elif arr_1[2] == arr_2[6] and arr_2[2] != arr_3[6] and arr_3[2] != arr_4[6]:
rotate_clockwise(arr_4)
rotate_counterclockwise(arr_3)
rotate_clockwise(arr_2)
elif arr_1[2] != arr_2[6] and arr_2[2] == arr_3[6] and arr_3[2] != arr_4[6]:
rotate_clockwise(arr_4)
rotate_counterclockwise(arr_3)
elif arr_1[2] != arr_2[6] and arr_2[2] != arr_3[6] and arr_3[2] == arr_4[6]:
rotate_clockwise(arr_4)
elif arr_1[2] == arr_2[6] and arr_2[2] == arr_3[6] and arr_3[2] != arr_4[6]:
rotate_clockwise(arr_4)
rotate_counterclockwise(arr_3)
elif arr_1[2] == arr_2[6] and arr_2[2] != arr_3[6] and arr_3[2] == arr_4[6]:
rotate_clockwise(arr_4)
elif arr_1[2] != arr_2[6] and arr_2[2] == arr_3[6] and arr_3[2] == arr_4[6]:
rotate_clockwise(arr_4)
else:
rotate_clockwise(arr_4)
else: # 반시계 방향 회전
if arr_1[2] != arr_2[6] and arr_2[2] != arr_3[6] and arr_3[2] != arr_4[6]:
rotate_counterclockwise(arr_4)
rotate_clockwise(arr_3)
rotate_counterclockwise(arr_2)
rotate_clockwise(arr_1)
elif arr_1[2] == arr_2[6] and arr_2[2] != arr_3[6] and arr_3[2] != arr_4[6]:
rotate_counterclockwise(arr_4)
rotate_clockwise(arr_3)
rotate_counterclockwise(arr_2)
elif arr_1[2] != arr_2[6] and arr_2[2] == arr_3[6] and arr_3[2] != arr_4[6]:
rotate_counterclockwise(arr_4)
rotate_clockwise(arr_3)
elif arr_1[2] != arr_2[6] and arr_2[2] != arr_3[6] and arr_3[2] == arr_4[6]:
rotate_counterclockwise(arr_4)
elif arr_1[2] == arr_2[6] and arr_2[2] == arr_3[6] and arr_3[2] != arr_4[6]:
rotate_counterclockwise(arr_4)
rotate_clockwise(arr_3)
elif arr_1[2] == arr_2[6] and arr_2[2] != arr_3[6] and arr_3[2] == arr_4[6]:
rotate_counterclockwise(arr_4)
elif arr_1[2] != arr_2[6] and arr_2[2] == arr_3[6] and arr_3[2] == arr_4[6]:
rotate_counterclockwise(arr_4)
else:
rotate_counterclockwise(arr_4)
# print(arr_1)
# print(arr_2)
# print(arr_3)
# print(arr_4)
# 점수 계산
score = 0
if arr_1[0] == '1':
score += 1
if arr_2[0] == '1':
score += 2
if arr_3[0] == '1':
score += 4
if arr_4[0] == '1':
score += 8
# 결과 출력
print(score)
댓글남기기