반응형
- 방향에 따른 이동 좌표를 direction이라는 변수에 키, 쌍 형태로 만들어준다.
- 방문된 이동 경로를 찾기위해 집합 자료형으로 visited를 만들어준다. (중복을 제거하기 위해 집합 사용)
- 현재 좌표를 now라고 하고, 0,0으로 세팅한다. 반복문으로 dirs에 따른 이동 좌표를 구한다.(dx,dy)
- 좌표 평면의 경계를 넘어가는 명령어는 무시하기 위해 5보다 크거나, -5보다 작은 4개의 조건에서는 for문을 건너뛴다.
- 이동 경로는 (0,1) -> (1,1) 로 간 경로와 (1,1) -> (0,1) 간 것을 같다고 치기 때문에, 이 두개의 경로를 모두 구해서 visited에 add 해준다.
- 이렇게 되면 동일 경로가 2개씩 들어가게 되므로, 마지막 visited에서 2로 나누어준 값이 answer이 된다.
function solution(dirs) {
const direction = {
U: [0, 1],
D: [0, -1],
L: [-1, 0],
R: [1, 0],
};
let visited = new Set();
let now = [0, 0];
for (let i = 0; i < dirs.length; i++) {
let dx = now[0] + direction[dirs[i]][0];
let dy = now[1] + direction[dirs[i]][1];
if (dx > 5 || dx < -5 || dy > 5 || dy < -5) continue;
visited.add("" + now[0] + now[1] + dx + dy);
visited.add("" + dx + dy + now[0] + now[1]);
now = [dx, dy];
}
return visited.size / 2;
}
let dirs = "ULURRDLLU";
console.log(solution(dirs));
//7 출력
728x90
반응형
'알고리즘' 카테고리의 다른 글
[JS] 프로그래머스_ 짝지어 제거하기 (0) | 2021.07.25 |
---|---|
[JS] 프로그래머스_폰켓몬 (0) | 2021.07.25 |
[JS] 프로그래머스 팰린드롬 개수 구하기 (0) | 2021.07.25 |
[JS] 알고리즘 기초 정복 5-6번_학급 회장(해쉬) (0) | 2021.07.20 |
[JS] 알고리즘 기초 정복 5-5번_최대 매출 (0) | 2021.07.20 |