Algorithm/Programers
프로그래머스 방문 길이 javascript
eclipse7727
2022. 9. 3. 21:35
프로그래머스
코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.
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;
}
반응형