๋ฐ์ํ
๐ค๋ฌธ์ ํด๊ฒฐ
-
lv3 | ์๋ฎฌ๋ ์ด์
๐จ ์๋ฅผ ๋ค์ด B๊ฐ ์์ง์ด๋ฉด์ ๋ฒํผ์ ๋๋ฅผ ๋์ O๋ ์์ง์ผ ์ ์์ด๋ ๋ฒํผ์ ๋๋ฅผ ์ ์๋ค. (๋ฐ๋๋ ๋ง์ฐฌ๊ฐ์ง)
๐จ ๋ฒํผ์ ๋๋ฅด๋ ์์๊ฐ ์๊ธฐ ๋๋ฌธ!
๐จ ํ์ง๋ง ์์ง์ผ ์ ์๊ธฐ ๋๋ฌธ์ ๋ฏธ๋ฆฌ ๋ฒํผ์ผ๋ก ์ด๋ํด์์ด๋ ๋๋ค.
๐จ ํด๋์ค ํ๋ฒ ์จ๋ณด๊ณ ์ถ์ด์ ์จ๋ด. ๊ตณ์ด ์ธ ํ์๋ ์๋ค. (ํด๋์ค๋ ๋ฐ๋ง์ด๊ฑฐ๋ผ)
๐ป์์ค ์ฝ๋
class Robot:
def __init__(self):
self.location = 1
self.time = 0
def status(self):
print(f'์์น:{self.location}, ์๊ฐ:{self.time}')
def operate(robot, button): # ํ์ฌ์์น์ ๋๋ฌ์ผ ๋๋ ๋ฒํผ
global time
# ์๊ฐ์ด ๊ฐ์ผ๋ฉด ๋ก๋ด์ด๋
if time == robot.time:
robot.time += abs(robot.location - button) + 1
robot.location = button
time = robot.time
else:
if time - robot.time > abs(robot.location - button): # ์๊ฐ์ด ์ถฉ๋ถํ๋ค๋ฉด ๋ก๋ด์ ์ด๋ฏธ ์ด๋ํ๋ค
time += 1 # ๋ฒํผ ๋๋ฅด๋ ์๊ฐ
robot.time = time
robot.location = button
else: # ์๊ฐ์ด ์ถฉ๋ถํ์ง ์์๋ค๋ฉด ๋ก๋ด์ ์๊ฐ์ฐจ์ด๋งํผ๋ง ์ด๋ ํ ๋๋จธ์ง ์ด๋
time += abs(robot.location - button) - (time - robot.time) + 1
robot.location = button
robot.time = time
return
for tc in range(int(input())):
tmp = input().split()
N = int(tmp[0])
orders = tmp[1:]
orange = Robot()
blue = Robot()
time = 0
for i in range(N):
r, o = orders[i * 2], orders[i * 2 + 1]
if r == 'O':
operate(orange, int(o))
else:
operate(blue, int(o))
print(f'#{tc + 1} {time}')
๐๋ฌธ์ ํ์ธ
์ถ์ฒ: SW Expert Academy
๋ฐ์ํ
'Algorithm Problem > Python' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[python] ๋ฐฑ์ค - 14235. ํฌ๋ฆฌ์ค๋ง์ค ์ ๋ฌผ (0) | 2020.11.10 |
---|---|
[python] ๋ฐฑ์ค - 2014. ์์์ ๊ณฑ (0) | 2020.11.09 |
[python] ๋ฐฑ์ค - 3190. ๋ฑ (์ผ์ฑ SW ์ญ๋ ํ ์คํธ ๊ธฐ์ถ ๋ฌธ์ ) (0) | 2020.11.07 |
[python] ๋ฐฑ์ค - 1655. ๊ฐ์ด๋ฐ๋ฅผ ๋งํด์ (0) | 2020.11.05 |
[python] ๋ฐฑ์ค - 1747. ์์&ํฐ๋ฆฐ๋๋กฌ (0) | 2020.11.04 |