Notice
Recent Posts
Recent Comments
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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
- 코드업
- Docker
- Apache Kafka
- 알고리즘
- gcp
- 백준
- 스프링부트
- 프로그래밍문제
- DFS
- Spring Boot
- 로드밸런서
- 클라우드
- VPC
- 자료구조
- Spring
- 백트래킹
- 월미도
- Kafka
- 카프카
- Spring Data JPA
- 클라우드 컴퓨팅
- 인천여행
- 오일러프로젝트
- aws
- Elasticsearch
- 쿠버네티스
- 스프링 부트
- springboot
- 스프링
- JPA
Archives
- Today
- Total
GW LABS
[Backjoon] 톱니바퀴 본문
14891번 톱니바퀴는 구현 및 시뮬레이션 문제로 좋은 연습이 된 문제다. 4개의 기어들이 회전방향에 따라서 옆에 붙어있는 기어들도 회전시킨다. 그런데 서로 맞물린 극성이 다르다면 회전시킬 수 없고, 회전시킬 수 없는 기어에 맞물린 기어들도 회전시킬 수 없다. 문제를 읽어가면서 부담감이 컸는데 천천히 구현해가면 충분히 풀이할 수 있는 문제였다. 구현과 시뮬레이션 관련한 문제를 좀 더 연습을 많이 해야겠다.
import sys
from collections import deque
if __name__ == "__main__":
gears = []
for _ in range(4):
gears.append(deque(list(map(int, list(sys.stdin.readline().replace("\n", ""))))))
rotates = []
rotate_count = int(sys.stdin.readline())
for _ in range(rotate_count):
rotates.append(list(map(int, sys.stdin.readline().split(" "))))
for number_gear, direction in rotates:
have_to_ratate = [0, 0, 0, 0]
idx_gear = number_gear - 1
have_to_ratate[idx_gear] = direction
# 정방향 기어들의 회전방향을 결정한다.
temp_direction = direction
idx_last_gear, idx_near_gear = idx_gear, idx_gear
while idx_near_gear < 3:
idx_near_gear += 1
temp_direction *= -1
if gears[idx_last_gear][2] != gears[idx_near_gear][6]:
have_to_ratate[idx_near_gear] = temp_direction
else:
break
idx_last_gear = idx_near_gear
# 역방향 기어들의 회전방향을 결정한다.
temp_direction = direction
idx_last_gear, idx_near_gear = idx_gear, idx_gear
while idx_near_gear > 0:
idx_near_gear -= 1
temp_direction *= -1
if gears[idx_last_gear][6] != gears[idx_near_gear][2]:
have_to_ratate[idx_near_gear] = temp_direction
else:
break
idx_last_gear = idx_near_gear
# 기어들을 회전시킨다.
for idx, direct in enumerate(have_to_ratate):
gears[idx].rotate(direct)
answer = 0
for idx, gear in enumerate(gears):
answer += (2**idx) * gear[0]
print(answer)
'Algorithm & DataStructure' 카테고리의 다른 글
[Backjoon] 회전하는 큐 (0) | 2020.12.18 |
---|---|
[Backjoon] 통나무 건너뛰기 (0) | 2020.12.13 |
[Backjoon] 저울 (0) | 2020.12.07 |
[Backjoon] 영역 구하기 (0) | 2020.11.30 |
[Backjoon] 단어 뒤집기 2 (0) | 2020.11.26 |
Comments