https://school.programmers.co.kr/learn/courses/30/lessons/172928
풀이방향 :
시작점 S 찾기
방향에 따라 움직이는 함수 작성
routes의 방향에 따른 움직임, 횟수만큼 반복시행
공원을 벗어나거나 장애물을 만나면 다음 명령 시행
제출
def solution(park, routes):
r,c = 0,0 # S 위치
R,C = len(park),len(park[0]) # 공원 경계
move = {"E":(0,1),"W":(0,-1),"S":(1,0),"N":(-1,0)}
for i,row in enumerate(park): # 시작점 찾기
if "S" in row:
r,c = i,row.find("S")
break
for route in routes:
dr,dc = move[route[0]] # 입력받는 route의 움직임 방향
new_r,new_c = r,c # new_r,new_c : route 적용 후 위치
for _ in range(int(route[2])): # 입력받은 route의 횟수만큼
# 한칸씩 움직이면서, 공원 안쪽이고 "X"가 아니라면 한칸이동
if 0<=new_r+dr<R and 0<=new_c+dc<C and park[new_r+dr][new_c+dc] != "X":
new_r,new_c = new_r+dr,new_c+dc
else: # 막혔다면 그대로 다음 명령 수행
new_r,new_c = r,c
break
r,c = new_r,new_c # 위치 업데이트
return [r,c]