문제링크
정답 코드
def solution(park, routes):
n = len(park)
m = len(park[0])
d = {'E' : (0, 1),
'W' : (0, -1),
'N' : (-1, 0),
'S' : (1, 0)}
for i in range(n) :
for j in range(m) :
if park[i][j] == 'S' :
x = i
y = j
break
for route in routes :
direction, distance = route.split()
distance = int(distance)
dir_x, dir_y = d[direction]
dx = dir_x * distance
dy = dir_y * distance
if not (0<=x+dx<n and 0<=y+dy<m) :
continue
ignore = False
if dx != 0 :
s = min(x, x+dx)
e = max(x, x+dx)
for i in range(s, e+1) :
if park[i][y] == 'X' :
ignore = True
break
if not ignore :
x = x + dx
else :
s = min(y, y+dy)
e = max(y, y+dy)
for i in range(s, e+1) :
if park[x][i] == "X" :
ignore = True
break
if not ignore :
y = y + dy
return [x, y]