DFS 8

[프로그래머스] 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] 2667.단지번호붙이기 - 파이썬

📖 문제 📃 코드 import sys input = sys.stdin.readline N = int(input()) complex = [] result = [] cnt = 0 # 아래, 위, 왼쪽, 오른쪽 dx = [0, 0, -1, 1] dy = [1, -1, 0, 0] def bfs(x, y): global cnt if x = N or y = N: return if complex[x][y] == 1: cnt += 1 # 다시 방문하지 않게 초기화 complex[x][y] = 0 for i in range(4): nx = x + dx[i] ny = y + dy[i] bfs(nx, ny) for i in range(N): complex.append(list(map(in..

백준[Python] 13023.ABCDE - 파이썬

📖 문제 📃 코드 import sys sys.setrecursionlimit(10**6) input = sys.stdin.readline N, M = map(int, input().split()) relation = [[] for i in range(N)] visited = [False] * (N+1) ans = False for i in range(M): a, b = map(int, input().split()) relation[a].append(b) relation[b].append(a) def dfs(idx, depth): global ans visited[idx] = True # 1. 종료조건 # case A-B-C-D-E 같은 친구 관계가 있는지 검사 if depth == 4: ans = Tru..

백준[Python] 11724.연결 요소의 개수 - 파이썬

📖 문제 📃 코드 import sys sys.setrecursionlimit(10**6) input = sys.stdin.readline N, M = map(int, input().split()) matrix = [[0]*(N+1) for i in range(N+1)] visited = [False] * (N+1) for i in range(M): a, b = map(int, input().split()) matrix[a][b] = matrix[b][a] = 1 def dfs(v): visited[v] = True for node in range(len(matrix[v])): if visited[node] == False and matrix[v][node] == 1: dfs(node) cnt = 0 fo..

백준[Python] 1260.DFS와 BFS - 파이썬

📖 문제 📃 코드 from collections import deque import sys input = sys.stdin.readline N, M, V = map(int, input().split()) matrix = [[0]*(N+1) for i in range(N+1)] visited = [False] * (N+1) visited1 = [False] * (N+1) for i in range(M): a, b = map(int, input().split()) matrix[a][b] = matrix[b][a] = 1 def dfs(V): visited[V] = True print(V, end=" ") # 수행동작 for i in range(N+1): if visited[i] == False and mat..

프로그래머스[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 ..