Skip to content

Conversation

tiaz0128
Copy link
Contributor

@tiaz0128 tiaz0128 commented Feb 17, 2024

소요시간

  • 1시간

사용한 자료구조, 알고리즘

  • 없음

해당 자료구조, 알고리즘을 사용한 근거

  • 없음

어려웠던 구현 포인트

  • find 함수의 인자값을 어떻게 넘겨야 할지 잘 생각하지 못함

구현한 코드의 시간 복잡도

  • $O(N)$

추가한 테스트 케이스와 그 이유

  • 없음

개선이 필요한 부분은?

  • set 이 어떻게 구현됐는지는 전혀 몰랐다.
  • 자료구조는 전부 직접 구현해봐야겠다.

Copy link
Contributor

👋 @tiaz0128 님 안녕하세요!
코딩 테스트 합격자 되기(파이썬 편) : 문제 033 를 풀고 있으시네요!
해당 문제의 책 페이지와 프로그래머스 링크를 알려드릴께요!

10장 집합
간단한 유니온-파인드 알고리즘 구현하기 ⭐⭐
코딩 테스트 합격자 되기(파이썬 편) - p347
저자 출제

  1. 테스트가 실패한 경우 다시 한번 문제를 풀어서 push 해보세요!
  2. 로컬에서 디버깅도 해보고 스스로 코멘트를 달면서 공부해보세요!
  3. 다시 한번 문제를 풀어서 push 해보세요!

@github-actions github-actions bot added fail 테스트에 실패했습니다. 문제033 labels Feb 17, 2024
@tiaz0128 tiaz0128 changed the title 문제 033 : 문제 033 : 간단한 유니온-파인드 알고리즘 구현하기 Feb 17, 2024
@github-actions github-actions bot added Pass 테스트에 성공했습니다. Merge 해주세요! and removed fail 테스트에 실패했습니다. labels Feb 17, 2024
Copy link
Contributor

🎉 @tiaz0128 님. 축하 합니다!

문제 033 테스트를 통과하셨습니다!
solutons 브랜치에 Merge 해주세요!

도움이 필요한 사람들이 있으면 도와주세요! 소통하면서 더 성장 할 수 있는 좋은 기회입니다!
문제 033 - 도움주러 가기

Copy link
Contributor

✨ 아래의 코드는 테스트를 통과한 코드입니다.

from typing import List


def find(parents: List[int], target: int):
    # 2. 부모 노드가 루트 노드인지 확인 (index == value)
    if parents[target] == target:
        return target

    # 3. 아닌 경우 계속해서 부모 노드를 타고 올라간다.
    parents[target] = find(parents, parents[target])
    return parents[target]


def union(parents: List[int], x, y):
    # 1. 각각 루트 노드를 찾는다.
    root_x = find(parents, x)
    root_y = find(parents, y)

    # 2. 찾은 루트 노드의 크기를 비교
    parents[root_y] = root_x


def solution(k, operations):
    parents = list(range(k))

    for operator, *nodes in operations:
        if operator == "u":
            union(parents, *nodes)
        elif operator == "f":
            find(parents, *nodes)

    return len(set(find(parents, i) for i in range(k)))

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
Pass 테스트에 성공했습니다. Merge 해주세요! 문제033
Projects
None yet
Development

Successfully merging this pull request may close these issues.

1 participant