Find Center of Star Graph

제로콜라좋아요·2024년 6월 12일
0

algorithem

목록 보기
24/37

문제설명

주어진 문제는 n개의 노드(1부터 n까지 번호가 매겨짐)로 구성된 무방향 스타 그래프에 관한 것입니다. 스타 그래프는 하나의 중심 노드와 정확히 n - 1개의 간선으로 이루어져 있으며, 이 간선들은 중심 노드와 다른 모든 노드를 연결합니다.

2D 정수 배열 edges가 주어지는데, 각 edges[i] = [ui, vi]는 노드 ui와 vi 사이에 간선이 있음을 나타냅니다. 주어진 스타 그래프의 중심 노드를 반환하세요.

예제 1:


입력: edges = [[1,2],[2,3],[4,2]]
출력: 2
설명: 위 그림에서 보이는 것처럼, 노드 2는 다른 모든 노드와 연결되어 있으므로 2가 중심 노드입니다.

예제 2:

입력: edges = [[1,2],[5,1],[1,3],[1,4]]
출력: 1

제약 조건:

•	3 <= n <= 10^5
•	edges.length == n - 1
•	edges[i].length == 2
•	1 <= ui, vi <= n
•	ui != vi
•	주어진 간선들은 유효한 스타 그래프를 나타냅니다.

해결 방법:

간단하게 첫 두 개의 간선에서 공통으로 나타나는 노드를 찾는 방법을 사용할 수 있습니다. 스타 그래프의 특성상 첫 두 간선에는 반드시 공통된 노드가 하나 있습니다. 그 노드가 바로 중심 노드입니다.

문제풀이

class Solution:
    def findCenter(self, edges: List[List[int]]) -> int:
        
        a, b = edges[0]
        c, d = edges[1]
        
        if a == c or a == d:
            return a
        else:
            return b

<내 코드의 흐름>

  1. findCenter라는 메서드를 정의합니다.
  • 이 메서드는 self와 edges라는 두 개의 인자를 받습니다.
  • self: 클래스 내의 메서드를 정의할 때 사용됩니다.
  • edges: 2D 리스트 형태로 주어지는 간선들을 나타냅니다.
  • List[List[int]]: edges가 정수 리스트를 요소로 가지는 리스트임을 명시합니다.
  • 반환 타입 int: 이 메서드는 정수형 값을 반환합니다.
  1. edges 리스트의 첫 번째 요소를 가져와서 a와 b라는 두 변수에 할당합니다.
  • 이는 첫 번째 간선의 두 노드를 의미합니다.
  1. edges 리스트의 두 번째 요소를 가져와서 c와 d라는 두 변수에 할당합니다.
  • 이는 두 번째 간선의 두 노드를 의미합니다.
  1. 만약 a가 c와 같거나, a가 d와 같은지 확인합니다.
  • 이는 a가 첫 두 간선에서 공통으로 나타나는 노드인지 확인하는 조건입니다.
  1. 만약 위 조건이 참이라면, a가 중심 노드이므로 a를 반환합니다.
  2. 만약 위 조건이 참이 아니라면, b가 중심 노드일 가능성이 큽니다. (첫 두 간선에서 공통으로 나타나는 노드가 b일 경우)
  3. 위 조건이 참이 아닐 경우, b를 반환합니다. 이는 b가 중심 노드라는 것을 의미합니다.
profile
개발자계의 제로콜라

0개의 댓글