[백준/python/15662] 톱니바퀴(2)
문제링크 : 톱니바퀴(2)
재밌는 구현문제이다. 그림그리면 문제를 이해하기 용이하다.
import sys
from collections import deque
input=sys.stdin.readline
T=int(input())
wheel=[deque(map(int, input().strip()))for _ in range(T)]
def move(n,d):
global cur_right, cur_left, wheel
origin_dir=d
for i in reversed(range(n)): # 왼쪽의 톱니바퀴
if wheel[i][2]!=cur_left:
cur_left=wheel[i][6]
wheel[i].rotate(d*-1)
d*=-1
else:
break
d=origin_dir
for i in range(n+1,T): # 오른쪽의 톱니바퀴
if wheel[i][6]!=cur_right:
cur_right=wheel[i][2]
wheel[i].rotate(d*-1)
d*=-1
else:
break
K=int(input())
for _ in range(K):
n,d=map(int, input().split())
cur_left,cur_right=wheel[n-1][6],wheel[n-1][2]
wheel[n-1].rotate(d)
move(n-1,d)
print(sum([1 if wheel[0] else 0 for delta,wheel in enumerate(wheel)]))
deque의 rotate를 쓰는 것이 이 문제풀이의 핵심인 것 같다. 다른 언어에서도 가능한지 모르겠지만 python은 이런것이 편리하다.
회전시키는 톱니바퀴를 기준으로 왼쪽에 있는 톱니바퀴들과 오른쪽에 있는 톱니바퀴들을 나눠서 풀어줬다.
Author And Source
이 문제에 관하여([백준/python/15662] 톱니바퀴(2)), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://velog.io/@i_am_developer/백준python15662-톱니바퀴2저자 귀속: 원작자 정보가 원작자 URL에 포함되어 있으며 저작권은 원작자 소유입니다.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)