Hiya_
개발자취🌱
Hiya_
Github
전체 방문자
오늘
어제
  • 분류 전체보기 (155) N
    • 💻Backend (1) N
      • 라이징캠프 (6)
      • SSAFY | 싸피 (2)
      • 신한DS 금융SW 아카데미 (2)
    • 📁문제 풀이 (102)
      • 🧩Baekjoon (47)
      • 🧩Programmers (42)
      • 🧩SWExpertAcademy (10)
      • 🧩Softeer (3)
    • 📂Language (31)
      • Python (3)
      • JAVA (2)
      • SQL (6)
      • English (19)
    • ✨Useful information (5)
    • 🔑Algorithms (3)
    • 🐙Git (2)

블로그 메뉴

  • 홈
  • 태그
  • 방명록

공지사항

인기 글

태그

  • 내장함수
  • BFS
  • sort
  • 정렬
  • 리스트
  • 구현
  • 토익점수
  • 2차원 배열
  • 토익RC
  • UNION ALL
  • 오블완
  • 토익시험
  • 코테
  • 다익스트라
  • 완전탐색
  • 토익무료자료
  • greedy algorithm
  • 백준
  • 그리디
  • 토익무료강의
  • 해커스토익
  • 토익독학
  • Python
  • mysql
  • 토익공부
  • BaekJoon
  • Union
  • 티스토리챌린지
  • 해커스파랭이
  • 토익기출

최근 댓글

최근 글

티스토리


Owner : 김신영
Naver Blog

hELLO · Designed By 정상우.
Hiya_

개발자취🌱

📁문제 풀이/🧩Baekjoon

[Python] 백준 1922 네트워크 연결 | 크루스칼 알고리즘

2023. 5. 28. 23:47

 

~목차~

문제

문제 해결 포인트

작성 코드


 

문제

https://www.acmicpc.net/problem/1922

 

1922번: 네트워크 연결

이 경우에 1-3, 2-3, 3-4, 4-5, 4-6을 연결하면 주어진 output이 나오게 된다.

www.acmicpc.net

 

 

문제 해결 포인트

- 크루스칼 알고리즘 (최소 스패닝 트리 알고리즘)

- 서로소 집합을 위한 find_parent, union_parent 함수

- edges : 간선 비용, 간선a, 간선b를 저장하여 오름차순으로 저장

- parent : 각 정점 별 집합 정보 저장

 

- 정렬된 edges 를 하나씩 방문하며 사이클이 발생하지 않는다면 간선 연결

    - find_parent(a) != find_parent(b)   즉, 같은 집합에 속해있지 않다

 

 

 

작성 코드

import sys
input = sys.stdin.readline
N = int(input())
M = int(input())

def find_parent(x):
    if parent[x] != x:
        parent[x] = find_parent(parent[x])
    return parent[x]

def union_parent(a, b):
    a = find_parent(a)
    b = find_parent(b)
    if a < b:
        parent[b] = a
    else:
        parent[a] = b


parent = [i for i in range(N+1)]
edges = []

for _ in range(M):
    a, b, c = map(int, input().split())
    edges.append((c, a, b))

edges.sort()
result = 0
for c, a, b in edges:
    if find_parent(a) != find_parent(b):
        union_parent(a, b)
        result += c

print(result)

 

 

 

도움이 되셨다면 좋아요 눌러주세요💚

 

 

'📁문제 풀이 > 🧩Baekjoon' 카테고리의 다른 글

[Python] 백준 6497 전력난 | 크루스칼 알고리즘  (0) 2023.05.28
[Python] 백준 4386 별자리 만들기 | 크루스칼 알고리즘  (0) 2023.05.28
[Python] 백준 1647 도시 분할 계획 | 크루스칼 알고리즘  (0) 2023.05.28
[Python] 백준 1197 최소 스패닝 트리  (0) 2023.05.23
[Python] 백준 18405 경쟁적 전염 | BFS  (0) 2023.05.20
    '📁문제 풀이/🧩Baekjoon' 카테고리의 다른 글
    • [Python] 백준 6497 전력난 | 크루스칼 알고리즘
    • [Python] 백준 4386 별자리 만들기 | 크루스칼 알고리즘
    • [Python] 백준 1647 도시 분할 계획 | 크루스칼 알고리즘
    • [Python] 백준 1197 최소 스패닝 트리
    Hiya_
    Hiya_
    하얀 천과 바람만 있다면 어디든 갈 수 있어

    티스토리툴바