E
: [0, 1]
, W
: [0, -1]
, S
: [1, 0]
, N
: [-1, 0]
객체 생성S
의 인덱스 구한 다음 현재 위치에 저장: join()
, indexOf()
forEach()
split()
X
를 만나거나 공원을 벗어나는 경우 넘어가기function solution(park, routes) {
const obj = { E: [0, 1], W: [0, -1], S: [1, 0], N: [-1, 0] };
const start = park.join('').indexOf('S');
let curr = [parseInt(start / park.length), start % park[0].length];
routes.forEach((route) => {
const [dir, cnt] = route.split(' ');
let [x, y] = curr;
for (let i = 0; i < Number(cnt); ++i) {
x += obj[dir][0];
y += obj[dir][1];
if (
x < 0 ||
x >= park.length ||
y < 0 ||
y >= park[0].length ||
park[x][y] === 'X'
) {
return;
}
}
curr = [x, y];
});
return curr;
}
평소보다 오래 고민이 필요해서 40분 정도 걸렸다.
끊임없는 런타임 에러...
배열에 인덱스로 접근할 때 범위를 넘어가지 않는지 잘 확인하자