[백준/Python] 1012번 유기농 배추
·
알고리즘문제풀이
문제https://www.acmicpc.net/problem/1012문제 풀이(정답)from collections import dequeT = int(input())dx = [0, 0, -1, 1]dy = [1, -1, 0, 0]def bfs(x, y):    queue = deque([(x,y)])    matrix[x][y] = 0    while queue:        x, y = queue.popleft()      # 방문 좌표 제거        for i in range(4):            nx = x + dx[i]            ny = y + dy[i]            if nx 0 or nx >= m or ny 0 or ny >= n:                cont..
[백준/Python] 2606번 바이러스
·
알고리즘문제풀이
문제https://www.acmicpc.net/problem/2606문제풀이(정답)이번 문제는 딱 보고 BFS문제이구나 생각했다. 노드간에 연결되어있는 관계만 파악하면 문제를 풀 수 있겠다 판단했다.그래서 지난 번에 풀었던 1260번 DFS와 BFS문제를 참고하여 풀었다.원래 다른 블로그와 챗지피티의 도움도 살짝 받으면서 푸는데 이번에는 내가 전에 푼 문제만 참고하여 풀었다.앞으로 아무도움을 받지 않고 풀때까지 열심히 해야겠다.n = int(input())m = int(input())graph = [[0] * (n+1) for _ in range(n+1)]for _ in range(m):    x, y = map(int, input().split())    graph[x][y] = graph[y][x] ..
[백준/Python] 2178번 미로 탐색
·
알고리즘문제풀이
문제https://www.acmicpc.net/problem/2178문제이해문제 이해는 꽤 쉬웠다. 1을 따라 최단 경로로 도착지까지 도착하면 되는 문제였다.이것 역시 너비우선탐색(BFS)로 푸는 문제이다.문제풀이(정답)from collections import dequen, m = map(int, input().split())lines = [list(map(int, input().strip())) for _ in range(n)]dx = [0, 1, 0, -1]dy = [1, 0, -1, 0]def bfs(x,y):    queue = deque([(x,y)])    while queue:        x, y = queue.popleft()      # 방문 좌표 제거        for i in r..
[백준/Python] 1697번 숨바꼭질
·
알고리즘문제풀이
문제https://www.acmicpc.net/problem/1697문제 풀이(정답)from collections import dequen, k = map(int, input().split())visited = [0] * 100001def bfs():    q = deque()    q.append(n)    while q:        x = q.popleft()        if x == k:            print(visited[x])            break        for j in (x-1, x+1, 2*x):            if 0 100000 and not visited[j]:                visited[j] = visited[x] + 1          ..
[백준/Python] 1260번 DFS와 BFS
·
알고리즘문제풀이
문제https://www.acmicpc.net/problem/1260개념 이해오늘은 미루고 미뤄왔던 DFS와 BFS의 개념을 정리하며 문제를 풀어보려 한다.학부 과정중에 잠깐 배웠던 적이 있는데 다 까먹어버렸다.. 용어정리정점 / 노드 : 특정 위치간선 : 위치 간의 관계, 정점(노드)을 연결한 선 DFSDFS란? 깊이 우선 탐색, 그래프에서 깊은 부분을 우선적으로 탐색하는 알고리즘재귀 함수 또는 스택을 이용해 알고리즘을 구현한다. BFSBFS란? 너비 우선 탐색, 그래프에서 가까운 노드부터 우선적으로 탐색하는 알고리즘큐를 이용해 알고리즘을 구현한다.문제풀이(정답)n, m, v = map(int, input().split())# 행렬 만들기graph = [[0] * (n+1) for _ in range(..