지나다니는 길을 'O', 장애물을 'X'로 나타낸 직사각형 격자 모양의 공원에서 로봇 강아지가 산책을 하려합니다. 산책은 로봇 강아지에 미리 입력된 명령에 따라 진행하며, 명령은 다음과 같은 형식으로 주어집니다.
["방향 거리", "방향 거리" … ]
예를 들어 "E 5"는 로봇 강아지가 현재 위치에서 동쪽으로 5칸 이동했다는 의미입니다. 로봇 강아지는 명령을 수행하기 전에 다음 두 가지를 먼저 확인합니다.
주어진 방향으로 이동할 때 공원을 벗어나는지 확인합니다.
주어진 방향으로 이동 중 장애물을 만나는지 확인합니다.
위 두 가지중 어느 하나라도 해당된다면, 로봇 강아지는 해당 명령을 무시하고 다음 명령을 수행합니다.
공원의 가로 길이가 W, 세로 길이가 H라고 할 때, 공원의 좌측 상단의 좌표는 (0, 0), 우측 하단의 좌표는 (H - 1, W - 1) 입니다.

공원을 나타내는 문자열 배열 park, 로봇 강아지가 수행할 명령이 담긴 문자열 배열 routes가 매개변수로 주어질 때, 로봇 강아지가 모든 명령을 수행 후 놓인 위치를 [세로 방향 좌표, 가로 방향 좌표] 순으로 배열에 담아 return 하도록 solution 함수를 완성해주세요.

function solution(park, routes) {
//시작 위치 찾기
let startPosition = []
for(let i = 0 ; i < park.length ; i++){
for(let j = 0 ; j < park[i].length ; j++){
if(park[i][j] == "S"){
startPosition.push(i,j)
break;
}
}
}
let [row, col] = startPosition
//routes 조건에 맞게 출력하기
routes.map(item => {
let [direction, distance] = item.split(" ")
distance = Number(distance)
let point = 0
// 방향에 따라 switch문 조건 적용
switch(direction){
case "E":
// park 범위에 벗어나면 빠져나오기
if(col+distance >= park[0].length) break;
// park에서 X만나는지 판단
for(let k=1; k<= distance; k++){
point += park[row][col+k] == "X"? 1 : 0
}
// X 만나지 않을 경우에만 위치 이동하기
point ==0 ? col = col + distance : null
break
case "W":
if(col-distance < 0) break;
for(let k=1; k<= distance; k++){
point += park[row][col-k] == "X"? 1 : 0
}
point ==0 ? col = col-distance : null
break
case "S":
if(row+distance >= park.length) break;
for(let k=1; k<=distance; k++){
point += park[row+k][col] == "X"? 1 : 0
}
point == 0 ? row = row + distance : null
break
case "N":
if(row-distance < 0) break;
for(let k=1; k<=distance; k++){
point += park[row-k][col] == "X"? 1 : 0
}
point == 0 ? row = row-distance : null
break
default:
break
}
})
return [row,col];
}
function solution(park, routes) {
const dirs = {'N':[-1,0],'E':[0,1],'S':[1,0],'W':[0,-1]}
//시작 위치 찾기
let startPosition = []
for(let i = 0 ; i < park.length ; i++){
for(let j = 0 ; j < park[i].length ; j++){
if(park[i][j] == "S"){
startPosition.push(i,j)
break;
}
}
}
let temp = [...startPosition]
//routes 분석
routes.forEach(item => {
let [direction, distance] = item.split(" ")
distance = Number(distance)
let point = 0
for(let k=1 ; k<=distance; k++){
temp[0] += dirs[direction][0]
temp[1] += dirs[direction][1]
point++
if( !park[temp[0]] || !park[temp[0]][temp[1]] || park[temp[0]][temp[1]] ==="X") {
temp=[...startPosition]
break
point++;
}
}
(point==distance) && (startPosition = [temp[0],temp[1]])
})
return startPosition;
}