BFS 4

[BFS,Deque] 백준-2206 벽 부수고 이동하기 골드2 (Python)

백준-2206 : 벽 부수고 이동하기 https://www.acmicpc.net/problem/2206 풀의 시작 점 부터 BFS 를 진행한다. BFS 를 진행하며 벽일 경우 벽을 아직 부수지 않았으면 벽을 부수고 진행한다. 벽을 부순 유물를 3차원으로 관리 코드 (Python) import sys from collections import deque read = sys.stdin.readline n, m = map(int, read().split(" ")) matrix = [list(map(int, read().rstrip())) for _ in range(n)] visited = [[[0] * 2 for _ in range(m)] for _ in range(n)] # 상 하 좌 우 dx = [0, 0..

Algorithm 2023.04.28

[BFS] 백준-10610 30 실버4

백준-10610 : 30 https://www.acmicpc.net/problem/10610 10610번: 30 어느 날, 미르코는 우연히 길거리에서 양수 N을 보았다. 미르코는 30이란 수를 존경하기 때문에, 그는 길거리에서 찾은 수에 포함된 숫자들을 섞어 30의 배수가 되는 가장 큰 수를 만들고 싶어한 www.acmicpc.net 아이디어 30의 배수 3의 배수이면서 10의 배수 3의 배수 조건 : 각자리 합이 3의배수 10의배수 조건 1의 자리의 숫자가 0 풀의 숫자를 입력받은 후 각자리 합을 더하면서 우선순위 큐에 넣는다. 우선순위 큐에서 꺼낸면서 결과에 더한 후 1의 자리가 0인지 확인한다. 코드 (java) package Bfs.Baejoon2437; import java.util.*; pub..

Algorithm 2023.04.11

[BFS] 백준-7576 토마토 골드5

백준-7576 : 토마토 https://www.acmicpc.net/problem/7576 7576번: 토마토 첫 줄에는 상자의 크기를 나타내는 두 정수 M,N이 주어진다. M은 상자의 가로 칸의 수, N은 상자의 세로 칸의 수를 나타낸다. 단, 2 ≤ M,N ≤ 1,000 이다. 둘째 줄부터는 하나의 상자에 저장된 토마토 www.acmicpc.net 풀의 익어있는 토마토들을 넣어주고 BFS를 진행 BFS를 진행할때 익어있는 경우 현재 값에 1을 더해서 경과를 표시 더 작은값일 경우 값 갱신 초기 익어있는 토마토값이 1이므로 총 경과일은 가장 큰 값에서 1을 뺀 값을 리턴 코드 (java) import java.util.*; class Baejoon7576Node { private int x; priva..

Algorithm 2023.04.08

[완전 탐색, BFS] 백준-14502 연구소 골드4 (Java)

백준-14502 : 연구소 https://www.acmicpc.net/problem/14502 14502번: 연구소 인체에 치명적인 바이러스를 연구하던 연구소에서 바이러스가 유출되었다. 다행히 바이러스는 아직 퍼지지 않았고, 바이러스의 확산을 막기 위해서 연구소에 벽을 세우려고 한다. 연구소는 크 www.acmicpc.net 아이디어 최대 8*8 matrix에 기둥을 3개 세우는 거니 64*64*64 백만번이 안돼서 완전 탐색해도 괜찮다고 생각함 풀이 입력받은 matrix에 0(빈곳)에 벽을 세우는 모든 경우의 수를 확인한다. 벽을 세운 이후 BFS를 통해서 바이러스를 확장시킨다. 모든 경우의수를 확인하면 안전지대의 수가 가장 많은 값을 반환한다. 코드 (java) import java.util.*; c..

Algorithm 2023.04.05