[programmers] [PCCP 기출문제] 3번 / 충돌위험 찾기

https://school.programmers.co.kr/learn/courses/30/lessons/340211

import java.util.*;

class Solution {
    public int solution(int[][] points, int[][] routes) {
        int answer = 0;
        Map<String,Integer> visited = new HashMap<>();

        for(int[] route : routes){
            int cnt = 1;
            int[] robot = new int[2];
            robot[0] = points[route[0]-1][0];
            robot[1] = points[route[0]-1][1];
            String key = robot[0]+"_"+robot[1]+"_"+cnt;
            visited.put( key, visited.getOrDefault(key, 0)+1);

            if(visited.get(key) == 2) answer++;

            for(int i = 1 ; i < route.length ; i++){
                int[] ePoint = points[route[i]-1];
                while(true){
                    cnt++;
                    if(robot[0] < ePoint[0]) robot[0]++;
                    else if(robot[0] > ePoint[0]) robot[0]--;
                    else if(robot[1] < ePoint[1]) robot[1]++;
                    else if(robot[1] > ePoint[1]) robot[1]--;

                    String tempKey = robot[0]+"_"+robot[1]+"_"+cnt;
                    visited.put( tempKey, visited.getOrDefault(tempKey, 0)+1);

                    if(visited.get(tempKey) == 2) answer++;

                    if(robot[0] == ePoint[0] && robot[1] == ePoint[1]) break;
                }
            }

        }

        return answer;
    }
}


© 2023 Lee. All rights reserved.