문제
로봇이 이동한 걸음수와 이동 방향이 주어질 떄,
원래 있던 지점으로 돌아오기 위해 필요한 최소 걸음 수를 구하라.
풀이
이 문제를 좌표로 생각하면 간단하다.
현재 위치를 (0,0)이라 하고, 북과 남쪽은 y좌표의 이동으로, 동과 서쪽은 x 좌표의 이동으로 생각하자.
각 문자별로 좌표를 이동시키고 난 후, 마지막 좌표가 현재 위치가 된다.
이 위치에서 (0,0)까지의 거리를 구해야 하는데, 이 로봇은 x축 또는 y축 이동만 가능하므로 x좌표와 y좌표의 절댓값을 각각 구해 더하면 최소 걸음 수가 나온다.
코드
def move(n, s):
x,y=0,0
for i in range(n):
if s[i]=='N':
y+=1
elif s[i]=='S':
y-=1
elif s[i]=='E':
x+=1
elif s[i]=='W':
x-=1
return abs(x)+abs(y)
n=int(input())
s=input()
print(move(n,s))
'BOJ > Python' 카테고리의 다른 글
[BOJ/백준] 31520 - Champernowne Verification (Python) (0) | 2024.10.31 |
---|---|
[BOJ/백준] 31282 - ЛОВНО КУЧЕ (Python) (0) | 2024.10.31 |
[BOJ/백준] 30658 - Os últimos serão os primeiros (Python) (1) | 2024.10.31 |
[BOJ/백준] 31280 - ФАКИP (Python) (0) | 2024.10.31 |
[BOJ/백준] 30319 - Advance to Taoyuan Regional (Python) (0) | 2024.10.31 |