PS/프로그래머스
[프로그래머스][map] 충돌 위험 찾기
꽁이꽁설꽁돌
2025. 7. 4. 15:16
728x90
반응형
목차
문제
https://school.programmers.co.kr/learn/courses/30/lessons/340211#
프로그래머스
SW개발자를 위한 평가, 교육의 Total Solution을 제공하는 개발자 성장을 위한 베이스캠프
programmers.co.kr
문제 구현 시 아이디어 및 가져갈 점
1. 좌표가 중복되는 것은 map을 통해 세주고 길이가 2이상이면 누적한다.
2. 이때 map의 키는 각 시간대를 포함한다. 따라서 모든 좌표를 한 타임마다 이동시켜가면서 누적시킬 필요가 없다.
코드 구현
let m = new Map();
function recordPath(t, r, c){
let str = `${t}-${r}-${c}`;
m.set(str, (m.get(str) || 0) + 1);
}
function solution(points, routes) {
var answer =0;
for(const route of routes){
let t =0;
let [r, c] = points[route[0]-1];
recordPath(t, r, c);
for(let idx =1; idx< route.length; idx++){
let [nr, nc] = points[route[idx]-1];
let rstep = nr > r ? 1: -1;
let cstep = nc > c ? 1: -1;
while(nr !== r){
t++;
r += rstep;
recordPath(t, r, c);
}
while(nc !== c){
t++;
c += cstep;
recordPath(t, r, c);
}
}
}
for(let cnt of m.values()){
if(cnt >1) answer++;
}
return answer;
}
반응형