Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | |||
5 | 6 | 7 | 8 | 9 | 10 | 11 |
12 | 13 | 14 | 15 | 16 | 17 | 18 |
19 | 20 | 21 | 22 | 23 | 24 | 25 |
26 | 27 | 28 | 29 | 30 | 31 |
Tags
- 트라이
- 파이썬
- 2021 KAKAO BLIND RECRUITMENT
- Spring
- 2020 KAKAO BLIND RECRUITMENT
- 플로이드와샬
- 투포인터
- 최소 신장 트리
- 2018 KAKAO BLIND RECRUITMENT
- BFS
- 다익스트라
- 이분탐색
- 2020 카카오 인턴십
- 구현
- 우선순위큐
- SWEA
- GIT
- 로봇 청소기
- 스택
- 브루트포스
- 2019 KAKAO BLIND RECRUITMENT
- 비트마스킹
- 백트래킹
- 조합
- 시뮬레이션
- 크루스칼
- 프로그래머스
- 플로이드 와샬
- 투 포인터
- 백준
Archives
- Today
- Total
개발조아
[BOJ/백준] 14891 톱니바퀴 파이썬 본문
728x90
문제 링크 : https://www.acmicpc.net/problem/14891
구현, 시뮬레이션 문제이다. 보통 이런 시뮬레이션 문제는 문제에서 하라는대로만 하면 잘맞긴했다. 근데 그게 어려울뿐...
문제는 톱니바퀴를 하나 회전했을 때 주변 톱니바퀴의 상태에 따라 같이 회전한다.
주어진 입력대로 다 회전후 모든 톱니바퀴의 상태에 따라 점수를 계산하라 이다.
회전을 시작하는 톱니바퀴는 좌우 톱니바퀴를 확인한다.
주변 톱니바퀴는 한쪽 방향만 확인하면 된다.
from sys import stdin
from collections import deque
input = stdin.readline
gears = []
for _ in range(4):
gears.append(list(input().strip()))
k = int(input())
order = []
for _ in range(k):
num,dir = map(int, input().split())
order.append((num-1,dir))
def solv():
simul()
print(calc_answer())
def calc_answer():
op = 0
answer = 0
for gear in gears:
if gear[0] == '1':
answer += 2**op
op += 1
return answer
def simul():
for num, dir in order:
q = deque()
if is_roate(num,1):
q.appendleft((num+1,-dir,1))
if is_roate(num,-1):
q.appendleft((num-1,-dir,-1))
rotate_gear(num,dir)
while q:
now,r,d = q.pop()
if now < 0 or now >= 4:
continue
if is_roate(now, d):
q.appendleft((now+d,-r,d))
rotate_gear(now, r)
def is_roate(num,d):
nxt = num+d
if d == 1:
if nxt >= 4 or gears[num][2] == gears[nxt][6]:
return False
else:
return True
else:
if nxt < 0 or gears[num][6] == gears[nxt][2]:
return False
else:
return True
def rotate_gear(num,r):
global gears
if r == 1:
gears[num] = gears[num][-1:]+gears[num][:-1]
else:
gears[num] = gears[num][1:]+gears[num][:1]
solv()
'알고리즘 > 백준' 카테고리의 다른 글
[BOJ/백준] 15686 치킨 배달 파이썬 (0) | 2021.09.09 |
---|---|
[BOJ/백준] 14503 로봇 청소기 파이썬 (0) | 2021.09.09 |
[BOJ/백준] 16927 배열 돌리기 2 파이썬 (0) | 2021.09.06 |
[BOJ/백준] 16434 드래곤 앤 던전 파이썬 (0) | 2021.09.05 |
[BOJ/백준] 7573 고기잡이 파이썬 (0) | 2021.09.01 |
Comments