본문 바로가기
Algorithm/Programers

프로그래머스 방문 길이 javascript

by eclipse7727 2022. 9. 3.
 

프로그래머스

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

programmers.co.kr

0,0에서 위, 오른쪽, 아래, 왼쪽 으로 가는데

평범한 탐색 문제인줄 알고 2d array로 방문체크를 하려했는데 

set을 사용하는게 더 편할거 같아 바꿨습니다.

set에 추가하는데 a점에서 b점으로 가는경우와 b점에서 a점으로 가능 경우 둘 다 저장했습니다.

function solution(dirs) {
    var answer = 0;
    const isValid = (x,y) => 0<= x && x <= 10 && 0 <= y && y <= 10;
    const dict = {
        'U':[0,-1],
        'D':[0,1],
        'R':[1,0],
        'L':[-1,0],
    }
    const visited = new Set()
    let x=5,y=5;
    for(let arrow of dirs){
        const [xx,yy] = dict[arrow];
        const [xxx,yyy] = [x+xx,y+yy];
        if(isValid(xxx,yyy)){
            // a => b, b => a 로가는 방향 둘다 저장
            const s = `${x} ${y} ${xxx} ${yyy}`;
            const s2 = `${xxx} ${yyy} ${x} ${y}`
            x=xxx;
            y=yyy;
            if(visited.has(s) === false){
                // 양쪽 방향 저장했으니 한 방향만 체크해도 결과가 나옴
                visited.add(s);
                visited.add(s2);
                answer++;
            }
        }    
    }
    return answer;
}
반응형

댓글