[프로그래머스] 방문 길이 javascript

[2018 윈터코딩] level3 방문 길이

javascript

조건
* 좌표평면의 경계를 넘어가는 명령어는 무시
* 처음 걸어본 길의 길이를 구하여 return

제한사항
  • dirs는 string형으로 주어지며, 'U', 'D', 'R', 'L' 이외에 문자는 주어지지 않습니다.
  • dirs의 길이는 500 이하의 자연수입니다.

입출력 예
dirsanswer
ULURRDLLU7
LULLLLLLU7

코드
function solution(dirs) {
    let answer = [];
    let gps = [0,0];
    dirs.split("").forEach((value) => {
        let ret = false;
        const pre_gps = gps.concat();
        if (value == "U" && gps[1] < 5)
        {
            gps[1] += 1;
            ret = true;
        }
        else if (value == "D" && gps[1] > -5)
        {
            gps[1] -= 1;
            ret = true;
        }
        else if (value == "R" && gps[0] < 5)
        {
            gps[0] += 1;
            ret = true;
        }
        else if (value == "L" && gps[0] > -5)
        {
            gps[0] -= 1;
            ret = true;
        }
        //길은 양뱡향이 아닌 단방향으로 취급("L,R" => ret : 1)
        const filter = answer.filter(item => {
            return item[0] == pre_gps[0] && item[1] == pre_gps[1] && item[2] == gps[0] && item[3] == gps[1] || item[0] == gps[0] && item[1] == gps[1] && item[2] == pre_gps[0] && item[3] == pre_gps[1]
        })
        if (ret && filter.length == 0)
            answer.push(pre_gps.concat(gps));
    });
    
    return answer.length;
}

댓글