직원 중요성

2314 단어 leetcodetheabbiedsa
직원 고유 ID, 중요도 값, 직속 부하 ID 등 직원 정보의 데이터 구조를 가지고 있습니다.

다음과 같은 직원 배열employees이 제공됩니다.
  • employees[i].idith 직원의 ID입니다.
  • employees[i].importanceith 직원의 중요도 값입니다.
  • employees[i].subordinatesith 직원의 직속 부하 직원의 ID 목록입니다.

  • 직원의 ID를 나타내는 정수id가 주어지면 이 직원과 모든 직속 부하 직원의 전체 중요도 값을 반환합니다.

    예 1:



    입력: 직원 = [[1,5,[2,3]],[2,3,[]],[3,3,[]]], ID = 1
    출력: 11
    설명: 직원 1의 중요도 값은 5이고 직속 부하 직원 2명과 직원 3이 있습니다.
    둘 다 중요도 값이 3입니다.
    따라서 직원 1의 총 중요도 값은 5 + 3 + 3 = 11입니다.

    예 2:



    입력: 직원 = [[1,2,[5]],[5,-3,[]]], ID = 5
    출력: -3
    설명: 직원 5의 중요도 값은 -3이며 직속 부하 직원이 없습니다.
    따라서 직원 5의 총 중요도 값은 -3입니다.

    제약:
  • 1 <= employees.length <= 2000
  • 1 <= employees[i].id <= 2000
  • 모든employees[i].id은 고유합니다.
  • -100 <= employees[i].importance <= 100
  • 직원 한 명은 직속 리더가 최대 한 명이며 부하 직원이 여러 명 있을 수 있습니다.
  • employees[i].subordinates의 ID는 유효한 ID입니다.

  • 해결책:

    """
    # Definition for Employee.
    class Employee:
        def __init__(self, id: int, importance: int, subordinates: List[int]):
            self.id = id
            self.importance = importance
            self.subordinates = subordinates
    """
    
    class Solution:
        def DFS(self, employees, i, visited):
            visited.add(i)
            for j in employees[i][1]:
                if j not in visited:
                    self.DFS(employees, j, visited)
    
        def getImportance(self, employees: List['Employee'], i: int) -> int:
            empMap = {}
            for emp in employees:
                empMap[emp.id] = [emp.importance, emp.subordinates]
            visited = set()
            self.DFS(empMap, i, visited)
            return sum([empMap[k][0] for k in visited])
    

    좋은 웹페이지 즐겨찾기