Programmers / 3단계 / 섬 연결하기 / python / Greedy / Kruskal 알고리즘

2024. 7. 13. 14:54·코딩테스트/programmers (python)

 

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

 

 

코드

def solution(n, costs):
    answer = 0
    costs.sort(key = lambda x: x[2])
    s = set([costs[0][0]])
    
    while len(s) != n:
        for v in costs:
            if v[0] in s and v[1] in s:
                continue
            if v[0] in s or v[1] in s:
                s.update([v[0], v[1]])
                answer += v[2]
                break
    return answer

 

kruskal 알고리즘을 사용해 문제를 해결할 수 있다. 

kruskal 알고리즘이란 최소한의 비용으로 구성되는 신장 트리인 최소 신장 트리의 대표적인 알고리즘으로 그리디 알고리즘으로 분류된다. 

 

동작 과정

1. 간선 데이터를 비용에 따라 오름차순으로 정렬

2. 간선을 하나씩 확인하며 현재의 간선이 사이클을 발생시키는지 확인 

  2-1. 사이클이 발생 X → 최소 신장 트리에 포함시킴

  2-2. 사이클이 발생 → 최소 신장 트리에 포함시키지 않음

3. 모든 간선에 대해 2번의 과정 반복

 

 

참조

[Python] 코딩테스트 유형 - 10-2. 최소 신장 트리(MST), Kruskal 알고리즘 (velog.io)

 

[Python] 코딩테스트 유형 - 10-2. 최소 신장 트리(MST), Kruskal 알고리즘

: 그래프에서 모든 노드를 포함하면서 사이클이 존재하지 않는 부분 그래프💡 트리의 조건 : 모든 노드가 포함되어 서로 연결되면서 사이클이 존재하지 않는다는 조건: 최소한의 비용으로 구성

velog.io

 

'코딩테스트 > programmers (python)' 카테고리의 다른 글

Programmers / 3단계 / 가장 먼 노드 / python  (0) 2024.07.26
Programmers / 3단계 / 무인도 여행 / python  (0) 2024.07.18
Programmers / 3단계 / 징검다리 건너기 / python / 2019 카카오 개발자 겨울 인턴십  (0) 2024.05.24
Programmers / 2단계 / 방금그곡 / python / 2018 KAKAO BLIND RECRUITMENT  (0) 2024.05.22
Programmers / 3단계 / 보석 쇼핑 / python  (0) 2024.05.21
'코딩테스트/programmers (python)' 카테고리의 다른 글
  • Programmers / 3단계 / 가장 먼 노드 / python
  • Programmers / 3단계 / 무인도 여행 / python
  • Programmers / 3단계 / 징검다리 건너기 / python / 2019 카카오 개발자 겨울 인턴십
  • Programmers / 2단계 / 방금그곡 / python / 2018 KAKAO BLIND RECRUITMENT
seulll
seulll
개인 공부 / 정리 블로그입니다
  • seulll
    seulll
    seulll
  • 전체
    오늘
    어제
    • 분류 전체보기 (339) N
      • 코딩테스트 (231) N
        • programmers (python) (156)
        • 백준 (python) (73) N
      • 자료구조 | 알고리즘 (14)
      • 개발 | 프로젝트 (43)
        • Python (4)
        • Java | Spring (7)
        • Android (5)
        • Unity (3)
        • API (4)
      • CS (15)
        • Network (5)
        • SQL (2)
        • OS (4)
      • 데이터 분석 (14)
      • 기타 (13)
  • 블로그 메뉴

    • 홈
    • 태그
    • 글쓰기
    • 설정
  • 링크

    • GitHub
  • 인기 글

  • 태그

    모델 성능 평가
    카카오맵
    asterisk
    오차행렬
    Boxplot
    백엔드 개발자 역량
    2 x n 타일링
    API
    프렌즈4블록
    confusion matrix
    solving environment
    바다코끼리
    백엔드
    웹크롤링
    Greedy
    데이터분석
    티스토리챌린지
    그리디 알고리즘
    Python
    프로그래머스
    대입 표현식
    파이썬
    야근 지수
    코딩테스트
    kakao map api
    박스플롯
    train_test_split
    백엔드 개발자
    오블완
    카카오맵 api
  • 최근 댓글

  • 최근 글

  • hELLO· Designed By정상우.v4.10.0
seulll
Programmers / 3단계 / 섬 연결하기 / python / Greedy / Kruskal 알고리즘
상단으로

티스토리툴바