코딩 테스트/Level 2

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

컴닥 2024. 11. 10. 11:03
반응형

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

 

프로그래머스

SW개발자를 위한 평가, 교육, 채용까지 Total Solution을 제공하는 개발자 성장을 위한 베이스캠프

programmers.co.kr

 

from collections import Counter

def solution(points, routes):
    maps = {}
    for route in routes:
        time = 0
        y, x = points[route[0] - 1]
        maps.setdefault((y, x), []).append(time)
        for i in range(1, len(route)):
            end_y, end_x = points[route[i] - 1]
            step = 1 if y < end_y else -1
            for y in range(y + step, end_y + step, step):
                time += 1
                maps.setdefault((y, x), []).append(time)
            step = 1 if x < end_x else -1
            for x in range(x + step, end_x + step, step):
                time += 1
                maps.setdefault((end_y, x), []).append(time)
    return sum(sum(1 for counter in Counter(values).values() if counter > 1) for values in maps.values())
테스트 1 〉	통과 (0.26ms, 10.3MB)
테스트 2 〉	통과 (0.21ms, 10.2MB)
테스트 3 〉	통과 (0.09ms, 10.4MB)
테스트 4 〉	통과 (0.53ms, 10.2MB)
테스트 5 〉	통과 (0.41ms, 10.2MB)
테스트 6 〉	통과 (1.73ms, 10.2MB)
테스트 7 〉	통과 (4.82ms, 10.6MB)
테스트 8 〉	통과 (41.38ms, 15MB)
테스트 9 〉	통과 (77.89ms, 17MB)
테스트 10 〉	통과 (34.27ms, 13.3MB)
테스트 11 〉	통과 (38.36ms, 14.2MB)
테스트 12 〉	통과 (48.66ms, 15.5MB)
테스트 13 〉	통과 (65.42ms, 17.4MB)
테스트 14 〉	통과 (259.15ms, 35.8MB)
테스트 15 〉	통과 (310.66ms, 35.6MB)
테스트 16 〉	통과 (269.14ms, 36.1MB)
테스트 17 〉	통과 (273.62ms, 39.3MB)
테스트 18 〉	통과 (406.42ms, 52.8MB)
테스트 19 〉	통과 (253.94ms, 36.1MB)
테스트 20 〉	통과 (268.65ms, 36.2MB)
반응형