FrontEnd/프로그래머스
[JS] 공원 산책
정_민_규
2023. 3. 24. 13:17
728x90
우선 dx,dy,di를 통해서 각 방향에 맞는 변화량을 설정해 주었다.
지금 생각해보면 di하나만 두고, 객체의 값에 'E' : [1,0] 이런 식으로 두었어도 괜찮을 것 같다.
배열에서 "S" 가 들어온 부분을 X,Y로 두고, 명령을 실행해준다.
명령을 하나씩 실행하면서 장애물이 있거나 맵 밖으로 나가면 진행이 안되게 한다.
function solution(park, routes) {
const dy = [1,0,-1,0]
const dx = [0,1,0,-1]
const di = {
'E' : 0,
'S' : 1,
'W' : 2,
'N' : 3
}
const colLen = park[0].length
const rowLen = park.length
let [X,Y] = park.map((el,idx) => el.indexOf("S")===-1 ? null:[idx,el.indexOf("S")]).filter(el=>el!==null)[0]
for (let route of routes){
const [d,l] = route.split(" ")
let [tmpX,tmpY] = [X,Y]
let flg = true
for (let i=0;i<l;i++){
const [nx,ny] = [tmpX + dx[di[d]], tmpY + dy[di[d]]]
if (0<= nx&& nx < rowLen && 0<= ny&& ny<colLen && park[nx][ny]!=="X")
[tmpX,tmpY] = [nx,ny]
else flg = false
}
if(flg) [X,Y] = [tmpX,tmpY]
}
return [X,Y];
}
728x90