ALGORITHM/PYTHON

백준 BAEKJOON 31844번 창고지기 [PYTHON/파이썬]

칼코
반응형

 

 

 

 

 

백준 BAEKJOON 31844번 창고지기 [PYTHON/파이썬]


<문제 출처> (BRONZE Ⅱ)

https://www.acmicpc.net/problem/31844

 

 

 

 

 

 

 

<풀이>

박스를 원하는 칸으로 이동시키기 위해서는

로봇의 위치 < 박스의 위치 < 깃발의 위치 혹은 깃발의 위치 < 박스의 위치 < 로봇의 위치가 성립해야 한다.

성립하지 않으면 박스를 원하는 칸으로 옮길 수 없기 때문에 -1을 출력한다.

 

로봇의 첫 번째 명령은 박스의 위치 한 칸 전까지 이동해야 하니

박스의 위치에서 로봇의 위치를 뺀 뒤 또 1을 빼줘야 한다.

 

로봇의 두 번째 명령은 박스를 미는 행위이기 때문에

깃발의 위치에서 박스의 위치를 빼주면 된다.

 

이 두 가지 명령의 횟수를 더해주면 결과를 출력할 수 있다.

 

 

 

 

 

 

 

<코드>

storage = list(input())
robot = storage.index("@")	# 로봇의 위치
box = storage.index("#")	# 박스의 위치
flag = storage.index("!")	# 깃발의 위치

if (robot < box < flag) or (robot > box > flag):
    commandFirst = abs(box - robot) - 1
    commandSecond = abs(flag - box)
    print(commandFirst + commandSecond)
else:
    print(-1)

 

 

 

 

 

 

 

 

반응형