def dfs(B_idx, O_idx, time): # 파랑 위치, 오렌지 위치, 시간
while len(Blue) != 0 or len(Orange) != 0:
# 파란색일 때,
if robot_order[0] == 'B':
# 현재 위치와 목표 값의 크기를 비교해서 이동
if int(robot_order[1])-1 > B_idx:
B_idx += 1
elif int(robot_order[1])-1 < B_idx:
B_idx -= 1
# 목표 값에 도착하면
# robot_order, Blue 값들 제거
else:
robot_order.pop(0)
robot_order.pop(0)
Blue.pop(0)
# 오렌지 버튼도 눌러야 할 때,
if len(Orange) != 0:
if O_idx > Orange[0]-1:
O_idx -= 1
elif O_idx < Orange[0]-1:
O_idx += 1
else:
if int(robot_order[1])-1 > O_idx:
O_idx += 1
elif int(robot_order[1])-1 < O_idx:
O_idx -= 1
else:
robot_order.pop(0)
robot_order.pop(0)
Orange.pop(0)
if len(Blue) != 0:
if B_idx > Blue[0]-1:
B_idx -= 1
elif B_idx < Blue[0]-1:
B_idx += 1
time += 1
return time
T = int(input())
for tc in range(1,1+T):
robot_order = list(map(str,input().split()))
# n 값
n = int(robot_order.pop(0))
Blue = []
Orange = []
# 파란색과 오렌지 색으로 분류
for q in range(n):
if robot_order[2*q] == 'B':
Blue.append(int(robot_order[2*q+1]))
else:
Orange.append(int(robot_order[2*q+1]))
# 파랑 위치, 오렌지 위치, 시간
print('#{} {}'.format(tc,dfs(0,0,0)))
그 외
문제 풀이를 위한 아이디어
1. 버튼은 순서대로 눌러야 한다
B 4 O 1이라는 값이 주어졌을 때, O 1에 먼저 도착하지만 B가 4번째의 버튼을 누르기 전까지
O는 버튼을 누를 수 없음
ps. 개인적인 코드와 코드를 작성의 이유를 적은 것입니다.
오류나 적절치 않은 문법이 존재할 수 있으며, 다른 분들께는 굉장히 비효율적인 방법으로 여겨질 수 있습니다.
혹시 개선 사항, 오류 및 문제에 대한 수정 사항 등을 댓글로 남겨주신다면 감사한 마음으로 배우고 수정하겠습니다
'코딩 문제해결 > 문제 풀이.SWEA' 카테고리의 다른 글
[SWEA 코딩] 최대 성적표 만들기 - PYTHON #4466 (0) | 2021.01.13 |
---|---|
[SWEA 코딩] 세상의 모든 팰린드롬 2 - PYTHON #4579 (0) | 2021.01.12 |
[SWEA 코딩] 민석이의 과제 체크하기 - PYTHON #5431 (0) | 2021.01.11 |
[SWEA 코딩] 새샘이의 7-3-5 게임 - PYTHON #5948 (0) | 2021.01.11 |
[SWEA 코딩] 현주의 상자 바꾸기 - PYTHON #5789 (0) | 2021.01.11 |