반응형
📖 문제
📃 코드
cnt = 0
def DFS(v, ch, graph):
global cnt
ch[v] = 1
cnt += 1
for i in graph[v]:
if ch[i] == 0:
DFS(i, ch, graph)
def solution(n, wires):
global cnt
answer = n
graph = [[] for _ in range(n+1)]
cnt = [0] * (n-1)
for v1, v2 in wires:
graph[v1].append(v2)
graph[v2].append(v1)
for v1, v2 in wires:
ch = [0]*(n+1)
# 끊는 역할
ch[v2] = 1
cnt = 0
DFS(v1, ch, graph)
answer = min(answer, abs(cnt - (n-cnt)))
return answer
🗝️ 요약
[개념]
DFS를 이용해서 가능한 경우의 수를 모두 체크해서 최대, 최소 값을 찾는다.
[활용]
DFS의 대표적 문제 유형: 경로탐색(최단거리, 시간), 네트워크(연결), 조합(모든 조합 만들기)
연결을 끊는다는 건 한 노드에서 다른 노드로 visited를 체크(True) 처리해 주는 것과 같다.
'Study & Project ✏️ > 프로그래머스 PCCP 공부 📅' 카테고리의 다른 글
[프로그래머스] BFS 복습 및 실습문제(송아지 찾기) 풀이 - 파이썬 (0) | 2022.11.12 |
---|---|
[프로그래머스] DFS 복습 및 실습문제(피로도) 풀이 - 파이썬 (0) | 2022.11.12 |
[프로그래머스] Sorting&Greedy 복습 및 실습문제(단속카메라) 풀이 - 파이썬 (0) | 2022.11.12 |
[프로그래머스] Two pointers 복습 및 실습문제(보석쇼핑) 풀이 - 파이썬 (0) | 2022.11.10 |
[프로그래머스] Array 자료구조 복습 및 실습문제(주차 요금 계산) 풀이 - 파이썬 (0) | 2022.11.09 |