프로그래머스 LEVEL 2(방문 길이)

image

  • 사용 언어 : javascript

  • 해결 날짜 : 2022-09-26

  • 해결 방법 :
    • dirs를 돌며 L, U, R, D 값에 따라 다음 position 확인 후 범위에 맞을 때 방문했던 길에 없다면 road 배열에 push()
  • 회고 :
    • 2차원 배열 속 array 값 비교 시 하나하나 값 비교 수행
  • 코드

    const checkIncludes = (arr, subarr) => {
        for (let i = 0; i < arr.length; i++){
            let checker = false;
            for (let j = 0; j < arr[i].length; j++){
                if (arr[i][j] === subarr[j]) checker = true;
                else {
                    checker = false;
                    break;
                }
            }
            if (checker) return true;
        }
        return false;
    }
    
    function solution(dirs) {
        const move = {'L': [-1, 0], 'U': [0, -1], 'R': [1, 0], 'D': [0, 1]};
        let pos = [5, 5];
        const road = [];
        for (let i = 0; i < dirs.length; i++) {
            const dir = dirs.charAt(i);
            const next = [pos[0] + move[dir][0], pos[1] + move[dir][1]];
            if (next[0] >= 0 && next[0] <= 10 && next[1] >= 0 && next[1] <= 10) {
                if (!checkIncludes(road, [...pos, ...next]) && !checkIncludes(road, [...next, ...pos])) road.push([...pos, ...next]);
                pos = next;
            }
        }
        return road.length;
    }
    
  • 출처: 프로그래머스 코딩 테스트 연습, https://school.programmers.co.kr/learn/challenges