728x90
반응형

Algorithm/BFS 7

[Baekjoon 2573 / Python / 골드4] 빙산

DFS, BFS 문제이다. 처음에 DFS로 풀어보려 했지만 도저히 머리를 싸매도 감이 안 와서 다른 풀이를 참고해 BFS로 풀었다. 근데 풀고 나니 별로 어렵게 느껴지지가 않는다. 뭐든 그런 것 같다. 해내기 전엔 어렵고 해내고 나면 당연한 게 되고 말이다. # BFSfrom collections import dequeimport sysinput = sys.stdin.readlineN, M = map(int, input().split()) # 행, 열ice = [list(map(int, input().split())) for _ in range(N)]dx = [-1, 1, 0, 0]dy = [0, 0, -1, 1]def iceBreaker():    # 빙산을 녹이고 개수를 세는 작업이 1번의 반복   ..

Algorithm/BFS 2024.10.04

[Baekjoon 14502 / Python / 골드4] 연구소

BFS, 백트래킹 문제이다. 거창한 백트래킹.. 이라기 보다, 그냥 모든 경우의 수를 찾기 위한 부분에서 백트래킹이 사용되었다. BFS가 메인이고 백트래킹은 거드는 느낌의 문제이다. # BFS, 백트래킹# 백트래킹으로 벽 3개를 세우는 경우의 수를 전부 구한 후, BFS로 바이러스를 전파시킨 후 안전 영역의 개수를 센다from collections import dequeimport sysimport copyinput = sys.stdin.readlineN, M = map(int, input().split()) # 행, 열graph = [] # 지도for _ in range(N):    graph.append(list(map(int, input().split())))dx = [-1, 1, 0, 0]dy =..

Algorithm/BFS 2024.09.24

[Baekjoon 5427 / Java / 골드4] 불

BFS 문제이다. 불이 1초마다 상하좌우로 1칸씩 퍼지고, 상근이는 1초마다 상하좌우로 1칸씩 이동할 수 있다.건물 끝 4방향의 '.' 빈 공간에 다다르면 탈출에 성공하게 된다. 상근이의 빌딩 탈출에 걸리는 시간을 출력하고, 탈출할 수 없다면 IMPOSSIBLE을 출력하면 된다. import java.io.*;import java.util.*;public class 불_5427 {    static int N; // 테스트 케이스 개수    static int[] dx = {-1, 1, 0, 0};    static int[] dy = {0, 0, -1, 1};    static char[][] tower;    static int[][] visited;    static int w, h;    publ..

Algorithm/BFS 2024.06.08

[Baekjoon 2589 / Java / 골드5] 보물섬

L이 육지고 W가 바다이다.상하좌우 육지로만 이동할 수 있다고 했을 때, 보물지도 내에서 가장 먼 두 육지의 거리를 출력하면 된다.물론 두 육지의 거리는 최단거리여야 한다. import java.io.*;import java.util.*;public class 보물섬_2589 {    // 입력값 저장할 변수, 4방향 탐색할 dx dy 선언    static int N, M;    static char[][] maps;    static int[] dx = {-1, 1, 0, 0};    static int[] dy = {0, 0, -1, 1};    public static void main(String[] args) throws IOException {        BufferedReader br =..

Algorithm/BFS 2024.05.31

[Baekjoon 3055 / python / 골드4] 탈출

# 도치가 사방으로 가는 것과, 물이 도치의 방문목록에 영향을 받는 것(도치가 지나간 길 안가는것)은 결과에 영향을 미치지 않는다. import sys from collections import deque input = sys.stdin.readline R, C = map(int, input().split()) # 행, 열 forest = [list(input().strip()) for _ in range(R)] visited = [[-1] * C for _ in range(R)] # -1로 설정해두고 도치의 이동 과정을 입력할것이다 dx = [-1, 1, 0, 0] dy = [0, 0, -1, 1] queue = deque() for x in range(R): for y in range(C): if f..

Algorithm/BFS 2024.04.03
728x90
반응형