https://school.programmers.co.kr/learn/courses/30/lessons/49994
현재 위치를 curX, curY 에 저장한다.
입력값을 순회하면서 이동한다.입력 타입에 따라 다음 위치를 구한다.
만약 다음 위치가 좌표상에 존재하고 처음 가는 경로라면 log Set에 저장하고
다음 위치를 반환한다.
log 에 저장된 데이터 타입은1,2->1,3
이다.처음 가는 경로인지 확인 할때는 양뱡향으로 확인해줘야하므로 뒤집어서도 확인한다.
그렇지 않으면 현재 경로를 그대로 반환한다.
모든 순회가 끝나면 log size를 반환한다.
function solution(dirs) {
function move(y, x, type) {
// x,y
const moveTypes = {
U: [0, 1],
D: [0, -1],
L: [-1, 0],
R: [1, 0]
};
let nextX = x + moveTypes[type][0];
let nextY = y + moveTypes[type][1];;
if (nextY >= -5 && nextY <= 5 && nextX >= -5 && nextX <= 5) {
if (!log.has(`${x},${y}->${nextX},${nextY}`) && !log.has(`${nextX},${nextY}->${x},${y}`)) {
log.add(`${x},${y}->${nextX},${nextY}`)
}
return [nextX, nextY];
}
return [x, y];
}
let log = new Set();
let curX = 0, curY = 0;
for (let type of dirs) {
[curY, curX] = move(curX, curY, type);
}
return log.size;
}