Coding Test/programmers

[프로그래머스] 모두 0으로 만들기 (그래프 DFS)

Karla Ko 2023. 8. 10. 16:09
728x90

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

 

프로그래머스

코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.

programmers.co.kr

 

분석

 

dfs 탐색하면서 부모 노드에 값 옮기면서 값 카운트

 

풀이

import sys
sys.setrecursionlimit(10**9)
answer=0

def solution(a, edges):
    
    if sum(a)!=0:
        return -1

    graph=[[] for _ in range(len(a))]
    for s,e in edges:
        graph[s].append(e)
        graph[e].append(s)
        
    def dfs(idx, pidx):
        global answer

        for i in graph[idx]:
            if i != pidx:
                dfs(i, idx)

        a[pidx] += a[idx]
        answer += abs(a[idx])
        a[idx] = 0

    dfs(0, 0)

    return answer

 

 

728x90