Programmers

[프로그래머스][JS] 캐릭터의 좌표

winter17 2023. 7. 20. 16:49

https://school.programmers.co.kr/learn/courses/30/lessons/120861

 

프로그래머스

코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.

programmers.co.kr

풀이 과정

function solution(keyinput, board) {
    let result = [0, 0]
    const Xrange = Math.floor(board[0] / 2)
    const Yrange = Math.floor(board[1] / 2)

    for (let i = 0; i < keyinput.length; i++){
        if (keyinput[i] === 'left' && result[0] !== -Xrange){
            result[0] -= 1
        }else if (keyinput[i] === 'right' && result[0] !== Xrange){
            result[0] += 1
        }else if (keyinput[i] === 'up' && result[1] !== Yrange){
            result[1] += 1
        }else if (keyinput[i] === 'down' && result[1] !== -Yrange){
            result[1] -= 1
        }
    }
    return result
}
// console.log(solution(["left", "left", "left", "left", "right", "right", "right", "right"], [5,5]))
// 기대값 = [2,0]

result = [0, 0]이 있는데 [x, y]라고 생각하고 계산을 하면 된다.

[x] left = -1, [x] right = 1, [y] down = -1, [y] top = 1  

keyinput을 반복하여 나오는 요소를 4개의 조건 중 일치하는 부분을 찾아 계산하면 되는데 

result 각 요소의 값이 board를 넘어가면 안 되기 때문에 board 요소의 값을 2로 나눈 몫을 넘어가지 않도록 조건을 작성하여 답을 도출한다.

이해하기 어렵다면 조건문마다 result 결과를 확인하면서 과정을 살펴보는 것도 방법이다


리뷰

board를 넘어가지 않아야 한다는 조건 때문에 시간이 좀 오래 걸렸다.