본문 바로가기

BOJ/Python

[BOJ/백준] 29823 - Pakirobot Manhattanis (Python)

문제

문제링크

로봇이 이동한 걸음수와 이동 방향이 주어질 떄,

원래 있던 지점으로 돌아오기 위해 필요한 최소 걸음 수를 구하라.

 

풀이

이 문제를 좌표로 생각하면 간단하다.

현재 위치를 (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))