[프로그래머스] Level3, 네트워크 (Python)

2021. 7. 14. 15:29·알고리즘/프로그래머스
728x90
반응형

문제

https://programmers.co.kr/learn/courses/30/lessons/43162?language=python3 

 

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

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

programmers.co.kr

 

코드

import collections
def solution(n, computers):
    
    def bfs(index):
        count = -1
        check[index] = True
        queue = collections.deque()
        queue.append(index)
        while queue:
            count += 1
            cur = queue.popleft()
            for next in graph[cur]:
                if check[next] == False:
                    check[next] = True
                    queue.append(next)
        return count
    
    answer = 0
    graph = [[] for _ in range(n+1)]
    check = [False for _ in range(n+1)]
    for i in range(len(computers)):
        for j in range(len(computers[i])):
            if i == j:
                continue
            if computers[i][j] == 1:
                graph[i+1].append(j+1)
    
    for i in range(len(graph)):
        if graph[i] and check[i] == False:
            answer += bfs(i)
            print(answer)
            
    return len(computers) - answer

computers 2중 배열이 주어지면 네트워크의 수를 구하는 문제이다.

네트워크의 수는 컴퓨터 갯수(정점의 개수) - 이어진 선(간선의 개수)로 생각했다.

 

computers 배열을 인접리스트 형식으로 바꿔서 graph에 저장해줬고

bfs시작점은 graph를 for문을 돌려 다음 정점으로 연결되어 있을경우에 bfs문을 돌려줬다.

 

bfs에서 count는 0부터 시작하게 되면 while문에서 index값을 돌때부터 +1을 해주게 되서 값이 이상해져

간선의 개수를 세어주기 위해 -1부터 시작한다. 

반응형
저작자표시 (새창열림)

'알고리즘 > 프로그래머스' 카테고리의 다른 글

[프로그래머스] Level 1, 신규 아이디 추천 (Python)  (0) 2021.08.05
[프로그래머스] Level3, 가장 먼 노드 (Python)  (0) 2021.07.26
[프로그래머스] Level2, 방문길이(Python)  (0) 2021.06.28
[프로그래머스] Level1, 3진법 뒤집기 (Python)  (0) 2021.06.26
[프로그래머스] Level1, 약수의 개수와 덧셈 (Python)  (0) 2021.06.25
'알고리즘/프로그래머스' 카테고리의 다른 글
  • [프로그래머스] Level 1, 신규 아이디 추천 (Python)
  • [프로그래머스] Level3, 가장 먼 노드 (Python)
  • [프로그래머스] Level2, 방문길이(Python)
  • [프로그래머스] Level1, 3진법 뒤집기 (Python)
wookcode
wookcode
공부한 내용들을 정리하고 기록하는 블로그입니다.
    반응형
  • wookcode
    wookcode
    wookcode
  • 전체
    오늘
    어제
    • 카테고리 (196) N
      • study (1) N
        • 아파치 카프카 애플리케이션 프로그래밍 with 자.. (0)
        • 인프런 (1) N
      • Live Study (15)
      • Programming (14)
        • Java (8)
        • Python (1)
        • Springboot (5)
        • MSA (0)
      • 알고리즘 (117)
        • 백준 (58)
        • 프로그래머스 (59)
      • 에러로그 (5)
      • 항해99 (23)
      • 면접 (1)
      • 프로젝트 (1)
      • CS (19)
        • 네트워크 (2)
        • 운영체제 (2)
        • 데이터베이스 (2)
        • 컴퓨터구조 (1)
        • Java (8)
        • Spring (4)
  • 블로그 메뉴

    • 홈
    • 태그
    • 방명록
  • 링크

  • 공지사항

  • 인기 글

  • 태그

    항해마켓
    백준
    파이썬
    코딩테스트
    에러
    카카오인턴
    브루트포스
    SpringBoot
    그리디
    조합
    SFlash
    java
    후기
    카카오코딩테스트
    미니프로젝트
    회고
    jpa
    버그
    실전프로젝트
    정리
    spring
    알고리즘
    인프런
    김영한
    스파르타코딩클럽
    orm
    해결
    항해99
    프로그래머스
    괄호
  • 최근 댓글

  • 최근 글

  • hELLO· Designed By정상우.v4.10.4
wookcode
[프로그래머스] Level3, 네트워크 (Python)
상단으로

티스토리툴바