본문 바로가기

코테

[프로그래머스] <네트워크> 파이썬

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

 

코딩테스트 연습 - 네트워크

네트워크란 컴퓨터 상호 간에 정보를 교환할 수 있도록 연결된 형태를 의미합니다. 예를 들어, 컴퓨터 A와 컴퓨터 B가 직접적으로 연결되어있고, 컴퓨터 B와 컴퓨터 C가 직접적으로 연결되어 있

programmers.co.kr

 def solution(n, computers):
    answer = 0
    def dfs(x,y) :
        if x < 0 or x >= n or y < 0 or y >= n : return False
        if computers[x][y] == 1 :
            computers[x][y] = 0
            dfs(x+1,y)
            dfs(x-1,y)
            dfs(x,y+1)
            dfs(x,y-1)
            return True
        return False
    
    for i in range(n) :
        for j in range(n) :
            if dfs(i,j) :
                answer += 1
    return answer

정확성 테스트

테스트 1 실패 (0.03ms, 10.3MB)
테스트 2 통과 (0.02ms, 10.2MB)
테스트 3 실패 (0.15ms, 10.2MB)
테스트 4 실패 (0.18ms, 10.3MB)
테스트 5 통과 (0.01ms, 10.3MB)
테스트 6 실패 (0.82ms, 10.2MB)
테스트 7 실패 (0.05ms, 10.2MB)
테스트 8 실패 (0.43ms, 10.1MB)
테스트 9 실패 (0.28ms, 10.1MB)
테스트 10 실패 (0.30ms, 10.2MB)
테스트 11 실패 (1.71ms, 10.2MB)
테스트 12 실패 (1.34ms, 10.2MB)
테스트 13 실패 (0.74ms, 10.2MB)

채점 결과

정확성: 15.4

합계: 15.4 / 100.0

 

def solution(n, computers):
    answer = 0
    visited = [False] * n
    
    def dfs(x, visited, computers) :
        visited[x] = True
        for i in range(n) :
            if not visited[i] and computers[x][i] == 1 :
                computers[x][i], computers[i][x] = 0, 0
                dfs(i, visited, computers)
                return
        return
    for i in range(n) :
        if not visited[i] :
            dfs(i, visited, computers)
            answer += 1
    return answer

정확성 테스트

테스트 1 통과 (0.01ms, 10.2MB)
테스트 2 통과 (0.01ms, 10.2MB)
테스트 3 실패 (0.03ms, 10.2MB)
테스트 4 실패 (0.03ms, 10.2MB)
테스트 5 통과 (0.01ms, 10.2MB)
테스트 6 실패 (0.11ms, 10.2MB)
테스트 7 통과 (0.02ms, 10.2MB)
테스트 8 실패 (0.09ms, 10.1MB)
테스트 9 실패 (0.06ms, 10.2MB)
테스트 10 실패 (0.06ms, 10.2MB)
테스트 11 실패 (0.35ms, 10.3MB)
테스트 12 실패 (0.30ms, 10.3MB)
테스트 13 실패 (0.18ms, 10.3MB)

채점 결과

정확성: 30.8

합계: 30.8 / 100.0

 

def solution(n, computers):
    answer = 0
    visited = [False] * n
    def dfs(x) :
        visited[x] = True
        for i in range(n) :
            if not visited[i] and computers[x][i]:
                computers[x][i], computers[i][x] = 0, 0
                dfs(i)
    for i in range(n) :
        if not visited[i] :
            dfs(i)
            answer += 1
    return answer

정확성 테스트

테스트 1 통과 (0.01ms, 10.2MB)
테스트 2 통과 (0.01ms, 10.3MB)
테스트 3 통과 (0.04ms, 10.2MB)
테스트 4 통과 (0.04ms, 10.2MB)
테스트 5 통과 (0.01ms, 10.3MB)
테스트 6 통과 (0.16ms, 10.2MB)
테스트 7 통과 (0.02ms, 10.3MB)
테스트 8 통과 (0.16ms, 10.2MB)
테스트 9 통과 (0.08ms, 10.2MB)
테스트 10 통과 (0.08ms, 10.2MB)
테스트 11 통과 (0.55ms, 10.2MB)
테스트 12 통과 (0.44ms, 10.3MB)
테스트 13 통과 (0.27ms, 10.2MB)

채점 결과

정확성: 100.0

합계: 100.0 / 100.0