깊이우선탐색 4

[프로그래머스] Graph 복습 및 실습문제(전력망을 둘로 나누기) 풀이 - 파이썬

📖 문제 📃 코드 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..

프로그래머스[Python] 네트워크 - 파이썬

📖 문제 📃 코드 def dfs(n, computers, com, visited): visited[com] = True # 자기 자신을 제외한 모든 case를 방문했는지 확인 for nx in range(n): if nx != com and computers[com][nx] == 1: # 방문하지 않았다면 if visited[nx] == False: dfs(n, computers, nx, visited) def solution(n, computers): answer = 0 visited = [False]*n # 모든 컴퓨터들을 돌면서 네트워크 체크 for com in range(n): # 만약 방문하지 않은 컴퓨터라면 dfs실행 if visited[com] == False: dfs(n, computers..

프로그래머스[Python] 타겟 넘버 - 파이썬

📖 문제 📃 코드 # 정수들을 순서를 바꾸지 않고 적정히 더하거나 빼서 # -> 모든 숫자들을 사용해야함 DFS def dfs(numbers, target, index, s): global answer # 1. 탈출조건 if index == len(numbers): if s == target: answer += 1 return answer # 2. 수행동작 dfs(numbers, target, index+1, s + numbers[index]) dfs(numbers, target, index+1, s - numbers[index]) def solution(numbers, target): global answer answer = 0 dfs(numbers, target, 0, 0) return answer ..

[프로그래머스] DFS 복습 및 실습문제(피로도) 풀이 - 파이썬

📖 문제 댕발자 게임에는 피로도 시스템(0 이상의 정수로 표현합니다)이 있으며, 일정 피로도를 사용해서 던전을 탐험할 수 있습니다. 이때, 각 던전마다 탐험을 시작하기 위해 필요한 "최소 필요 피로도"와 던전 탐험을 마쳤을 때 소모되는 "소모 피로도"가 있습니다. "최소 필요 피로도"는 해당 던전을 탐험하기 위해 가지고 있어야 하는 최소한의 피로도를 나타내며, "소모 피로도"는 던전을 탐험한 후 소모되는 피로도를 나타냅니다. 예를 들어 "최소 필요 피로도"가 80, "소모 피로도"가 20인 던전을 탐험하기 위해서는 유저의 현재 남은 피로도는 80 이상 이어야 하며, 던전을 탐험한 후에는 피로도 20이 소모됩니다. 이 게임에는 하루에 한 번씩 탐험할 수 있는 던전이 여러 개 있는데, 한 유저가 오늘 이 던..