FrontEnd/프로그래머스

[JS] 공원 산책

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

'FrontEnd > 프로그래머스' 카테고리의 다른 글

[JS] 카드 뭉치  (0) 2023.03.28
[JS] 대충만든 자판  (0) 2023.03.26
[JS] 덧칠하기  (0) 2023.03.23
[JS] 바탕화면 정리  (0) 2023.03.21
로그인 성공  (0) 2023.03.13