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;
}
반응형
'Algorithm > Programers' 카테고리의 다른 글
프로그래머스 카운트 다운 javascript (0) | 2022.10.10 |
---|---|
프로그래머스 멀리 뛰기 javascript (0) | 2022.09.05 |
프로그래머스 숫자 블록 javascript (0) | 2022.09.03 |
프로그래머스 N-Queen javascript (0) | 2022.08.28 |
프로그래머스 줄 서는 방법 javascript (0) | 2022.08.28 |
댓글