코테

[프로그래머스] <배달> 파이썬

SNNP 2021. 5. 7. 10:52

programmers.co.kr/learn/courses/30/lessons/12978

 

코딩테스트 연습 - 배달

5 [[1,2,1],[2,3,3],[5,2,2],[1,4,2],[5,3,1],[5,4,2]] 3 4 6 [[1,2,1],[1,3,2],[2,3,2],[3,4,3],[3,5,2],[3,5,3],[5,6,1]] 4 4

programmers.co.kr

def solution(N, road, K):
    answer = 1
    arr = [[500000] * (N+1) for _ in range(N+1)]
    
    for i in road : arr[i[0]][i[1]], arr[i[1]][i[0]] = min(arr[i[0]][i[1]],i[2]), min(arr[i[1]][i[0]],i[2])

    for i in range(2,N+1) :
        if arr[1][i] != 500000 or arr[1][i] <= K : continue
        else :
            for j in range(2,N+1) :
                if arr[1][j] <= K and arr[j][i] != 500000 :
                    arr[1][i], arr[i][1] = min(arr[1][i],arr[1][j] + arr[j][i]), min(arr[i][1],arr[1][j] + arr[j][i])
                    
    for i in arr[1] :
        if i <= K : answer += 1
    return answer

정확성 테스트

테스트 1 통과 (0.03ms, 10.3MB)
테스트 2 통과 (0.02ms, 10.3MB)
테스트 3 통과 (0.03ms, 10.3MB)
테스트 4 통과 (0.03ms, 10.3MB)
테스트 5 통과 (0.04ms, 10.3MB)
테스트 6 통과 (0.02ms, 10.3MB)
테스트 7 통과 (0.03ms, 10.3MB)
테스트 8 통과 (0.02ms, 10.2MB)
테스트 9 통과 (0.02ms, 10.3MB)
테스트 10 실패 (0.03ms, 10.2MB)
테스트 11 실패 (0.04ms, 10.3MB)
테스트 12 실패 (0.20ms, 10.3MB)
테스트 13 실패 (0.16ms, 10.3MB)
테스트 14 실패 (0.98ms, 10.4MB)
테스트 15 실패 (1.24ms, 10.4MB)
테스트 16 실패 (0.07ms, 10.3MB)
테스트 17 실패 (0.13ms, 10.3MB)
테스트 18 실패 (0.50ms, 10.3MB)
테스트 19 실패 (1.19ms, 10.3MB)
테스트 20 실패 (0.53ms, 10.3MB)
테스트 21 실패 (1.13ms, 10.4MB)
테스트 22 실패 (0.66ms, 10.3MB)
테스트 23 실패 (1.30ms, 10.4MB)
테스트 24 실패 (1.13ms, 10.4MB)
테스트 25 실패 (1.43ms, 10.5MB)
테스트 26 실패 (1.58ms, 10.4MB)
테스트 27 실패 (2.07ms, 10.5MB)
테스트 28 실패 (1.64ms, 10.4MB)
테스트 29 실패 (1.66ms, 10.5MB)
테스트 30 통과 (1.86ms, 10.5MB)
테스트 31 통과 (0.42ms, 10.3MB)
테스트 32 통과 (0.54ms, 10.3MB)

채점 결과

정확성: 37.5

합계: 37.5 / 100.0

 

 

def solution(N, road, K):
    answer = 1
    arr = [[500000] * (N+1) for _ in range(N+1)]
    
    for i in road : arr[i[0]][i[1]], arr[i[1]][i[0]] = min(arr[i[0]][i[1]],i[2]), min(arr[i[1]][i[0]],i[2])
    for i in range(1, N+1) : arr[i][i] = 0
    for path in range(N+1) :
        for i in range(N+1) :
            for j in range(N+1) :
                arr[i][j] = min(arr[i][j], arr[i][path] + arr[path][j])

    #print(arr)
    for i in arr[1] :
        if i < K : answer += 1
    return answer

정확성 테스트

테스트 1 실패 (0.26ms, 10.3MB)
테스트 2 실패 (0.08ms, 10.2MB)
테스트 3 실패 (0.14ms, 10.2MB)
테스트 4 통과 (0.05ms, 10.3MB)
테스트 5 실패 (0.82ms, 10.2MB)
테스트 6 통과 (0.19ms, 10.2MB)
테스트 7 통과 (0.19ms, 10.3MB)
테스트 8 통과 (0.17ms, 10.2MB)
테스트 9 통과 (0.03ms, 10.3MB)
테스트 10 통과 (0.53ms, 10.3MB)
테스트 11 실패 (0.65ms, 10.1MB)
테스트 12 통과 (19.00ms, 10.3MB)
테스트 13 실패 (9.80ms, 10.2MB)
테스트 14 실패 (11.21ms, 10.4MB)
테스트 15 실패 (18.47ms, 10.3MB)
테스트 16 통과 (3.58ms, 10.4MB)
테스트 17 통과 (8.39ms, 10.3MB)
테스트 18 통과 (35.27ms, 10.3MB)
테스트 19 통과 (32.61ms, 10.4MB)
테스트 20 실패 (37.87ms, 10.3MB)
테스트 21 실패 (24.86ms, 10.5MB)
테스트 22 실패 (39.19ms, 10.3MB)
테스트 23 실패 (41.01ms, 10.5MB)
테스트 24 실패 (29.05ms, 10.4MB)
테스트 25 실패 (42.34ms, 10.6MB)
테스트 26 통과 (38.41ms, 10.5MB)
테스트 27 실패 (31.70ms, 10.6MB)
테스트 28 통과 (39.68ms, 10.6MB)
테스트 29 실패 (42.10ms, 10.6MB)
테스트 30 실패 (40.90ms, 10.5MB)
테스트 31 통과 (39.09ms, 10.3MB)
테스트 32 통과 (39.94ms, 10.3MB)

채점 결과

정확성: 46.9

합계: 46.9 / 100.0

 

def solution(N, road, K):
    answer = 0
    arr = [[500000] * (N+1) for _ in range(N+1)]
    
    for i in road : 
        arr[i[0]][i[1]], arr[i[1]][i[0]] = min(arr[i[0]][i[1]],i[2]), min(arr[i[1]][i[0]],i[2])
    for i in range(1, N+1) : arr[i][i] = 0
    for path in range(N+1) :
        for i in range(N+1) :
            for j in range(N+1) :
                if arr[i][j] > arr[i][path] + arr[path][j] :
                    arr[i][j] = arr[i][path] + arr[path][j]

    #print(arr)
    for i in arr[1] :
        if i <= K : answer += 1
    return answer

정확성 테스트

테스트 1 통과 (0.16ms, 10.3MB)
테스트 2 통과 (0.06ms, 10.2MB)
테스트 3 통과 (0.09ms, 10.3MB)
테스트 4 통과 (0.05ms, 10.4MB)
테스트 5 통과 (0.38ms, 10.3MB)
테스트 6 통과 (0.11ms, 10.2MB)
테스트 7 통과 (0.11ms, 10.3MB)
테스트 8 통과 (0.11ms, 10.3MB)
테스트 9 통과 (0.03ms, 10.3MB)
테스트 10 통과 (0.27ms, 10.2MB)
테스트 11 통과 (0.36ms, 10.3MB)
테스트 12 통과 (9.14ms, 10.3MB)
테스트 13 통과 (5.79ms, 10.3MB)
테스트 14 통과 (6.22ms, 10.2MB)
테스트 15 통과 (10.16ms, 10.5MB)
테스트 16 통과 (1.69ms, 10.3MB)
테스트 17 통과 (4.31ms, 10.3MB)
테스트 18 통과 (18.50ms, 10.3MB)
테스트 19 통과 (16.58ms, 10.3MB)
테스트 20 통과 (18.56ms, 10.3MB)
테스트 21 통과 (13.34ms, 10.5MB)
테스트 22 통과 (20.34ms, 10.3MB)
테스트 23 통과 (20.28ms, 10.5MB)
테스트 24 통과 (15.33ms, 10.4MB)
테스트 25 통과 (21.26ms, 10.6MB)
테스트 26 통과 (20.00ms, 10.6MB)
테스트 27 통과 (17.24ms, 10.5MB)
테스트 28 통과 (21.19ms, 10.7MB)
테스트 29 통과 (22.67ms, 10.6MB)
테스트 30 통과 (22.16ms, 10.5MB)
테스트 31 통과 (19.56ms, 10.4MB)
테스트 32 통과 (19.34ms, 10.3MB)

채점 결과

정확성: 100.0

합계: 100.0 / 100.0