SWEA에서 비슷한 문제를 푼 경험이 있어서 수월하게 풀었음
크게 3단계로 나누어 풀이함
1. 각 톱니바퀴의 극을 비교하여 회전 가능성 판단
2. 회전 - 데크를 사용함
3. 점수 계산
# 14891. 톱니바퀴
import sys
from collections import deque
input = sys.stdin.readline
arr = [deque(map(int, list(input().strip()))) for _ in range(4)]
cnt = int(input())
for _ in range(cnt):
# 1: 시계 방향, -1: 반시계 방향
curr, d = map(int, input().split())
curr -= 1
temp = curr
rot = [0] * 4
rot[curr] = d
# 오른쪽 방향 확인
while rot[curr] and curr < 3:
if arr[curr][2] != arr[curr+1][6]:
rot[curr+1] = -rot[curr]
curr += 1
# 왼쪽 방향 확인
curr = temp
while rot[curr] and 0 < curr:
if arr[curr][6] != arr[curr-1][2]:
rot[curr-1] = -rot[curr]
curr -= 1
# 회전
for i in range(4):
# 시계 방향으로 회전하는 톱니바퀴라면
if rot[i] == 1:
arr[i].appendleft(arr[i].pop())
# 반시계 방향 회전 톱니바퀴
elif rot[i] == -1:
arr[i].append(arr[i].popleft())
# 점수 계산
point = 0
# N극: 0, S극: 1
for i in range(4):
if arr[i][0] == 1:
point += 2 ** i
print(point)'Study | 성장기록 > Algorithm' 카테고리의 다른 글
| [Baekjoon]2467. 용액 (7) | 2024.04.17 |
|---|---|
| [Baekjoon]17144. 미세먼지 안녕! (6) | 2024.03.21 |
| [Baekjoon]14502. 연구소 (4) | 2024.03.14 |
| [Baekjoon]14500. 테트로미노 (4) | 2024.03.13 |
| [Baekjoon]14503. 로봇 청소기 (3) | 2024.03.12 |