728x90
문제
https://school.programmers.co.kr/learn/courses/30/lessons/340211
풀이
이 문제의 경우 각 로봇이 움직이는 시간별로 위치를 객체에 담아 중복되는 경우를 탐지해야한다.
코드
function solution(points, routes) {
let answer = 0;
const map = new Map();
const pos = [];
points.forEach(([y, x], i) => {
map.set(i + 1, [y, x]);
});
routes.forEach((e) => {
let time = 0;
let last = [0, 0];
for (let i = 0; i < e.length - 1; i++) {
let [sY, sX] = map.get(e[i]);
let [eY, eX] = map.get(e[i + 1]);
while (sY !== eY || sX !== eX) {
if (!pos[time]) pos[time] = {};
if (!pos[time][sY]) pos[time][sY] = {};
pos[time][sY][sX] = (pos[time][sY][sX] || 0) + 1;
if (pos[time][sY][sX] === 2) answer += 1;
if (sY > eY) sY--;
else if (sY < eY) sY++;
else if (sX > eX) sX--;
else if (sX < eX) sX++;
last = [sY, sX];
time++;
}
}
if (!pos[time]) pos[time] = {};
if (!pos[time][last[0]]) pos[time][last[0]] = {};
pos[time][last[0]][last[1]] = (pos[time][last[0]][last[1]] || 0) + 1;
if (pos[time][last[0]][last[1]] === 2) answer += 1;
})
return answer;
}
728x90
'코딩 테스트 > 프로그래머스 코딩 테스트 연습' 카테고리의 다른 글
[JS] 프로그래머스_level 3_등굣길 (3) | 2024.11.12 |
---|---|
[Level 3] 정수 삼각형 (1) | 2024.11.08 |
[JS] 유사 칸코어 비트열 (0) | 2024.10.29 |
[JS] 괄호 변경 (0) | 2024.10.04 |
[JS] 자물쇠와 열쇠 (0) | 2024.10.03 |