BFS 17

[Python/BOJ] 백준 7576 토마토(BFS)

https://www.acmicpc.net/problem/7576 7576번: 토마토 첫 줄에는 상자의 크기를 나타내는 두 정수 M,N이 주어진다. M은 상자의 가로 칸의 수, N은 상자의 세로 칸의 수를 나타낸다. 단, 2 ≤ M,N ≤ 1,000 이다. 둘째 줄부터는 하나의 상자에 저장된 토마토 www.acmicpc.net 백준의 BFS 문제의 정석!!!! 🐾 20221024 💻 c++로는 여러번 풀었지만 파이썬으로는 처음 풀어본다. from collections import deque dx = [1,0,-1,0] dy = [0,1,0,-1] m,n = map(int, input().split()) arr = [list(map(int,input().split()))for _ in range(n)] q..

[Python/BOJ] 백준 1697 숨바꼭질 (dfs)

https://www.acmicpc.net/problem/1697 1697번: 숨바꼭질 수빈이는 동생과 숨바꼭질을 하고 있다. 수빈이는 현재 점 N(0 ≤ N ≤ 100,000)에 있고, 동생은 점 K(0 ≤ K ≤ 100,000)에 있다. 수빈이는 걷거나 순간이동을 할 수 있다. 만약, 수빈이의 위치가 X일 www.acmicpc.net 📄 문제 수빈이는 -1, +1, *2 로 움직일 수 있을때 수빈이가 동생을 찾는 가장 빠른 시간은? 🖌 어떤 생각? 풀었던 문제 - 촌수계산과 비슷하겠거니 하고 풀었다. 계속 틀렸다고 나와서 백준의 질문들을 읽어보았다. 💡 새롭게 알게된 내용 내가 몰랐던 내용은 두가지였다. 1. dist 배열은 0으로 초기화하면 귀찮아진다. 이는 수빈이와 동생의 자리가 0일 수 도있다는..

[Python/BOJ] 백준 2644 촌수계산 (bfs)

https://www.acmicpc.net/problem/2644 2644번: 촌수계산 사람들은 1, 2, 3, …, n (1 ≤ n ≤ 100)의 연속된 번호로 각각 표시된다. 입력 파일의 첫째 줄에는 전체 사람의 수 n이 주어지고, 둘째 줄에는 촌수를 계산해야 하는 서로 다른 두 사람의 번호가 주어 www.acmicpc.net 이전에 dfs 문제를 파이썬으로 풀어봐서 그런가 파이썬으로 bfs문제를 처음 풀어보았지만 그렇게 어렵지는 않았다. 문제 이름 그대로 촌수를 계산하는 문제이다. 🖌 어떤 생각? 일단 파이썬으로 bfs문제를 처음 풀어보니 어떻게 해야할지 몰라서 코드를 찾아보았다. deque을 이용해서 풀었다! from collections import deque n = int(input()) p,..

[C++/BOJ] 백준 4963 섬의 개수(BFS)

https://www.acmicpc.net/problem/4963 4963번: 섬의 개수 입력은 여러 개의 테스트 케이스로 이루어져 있다. 각 테스트 케이스의 첫째 줄에는 지도의 너비 w와 높이 h가 주어진다. w와 h는 50보다 작거나 같은 양의 정수이다. 둘째 줄부터 h개 줄에는 지도 www.acmicpc.net 이 문제의 특별한 점 1 . 대각선으로 이어지는 것도 고려해야한다. 2 . 0을 두개 입력받으면 반복문이 종료되어야한다. 대각선으로 이어지는 것도 고려해야한다. 그림을 그려서 대각선까지 갈 수 있도록 dx, dy를 만든다. [배열의 크기는 8] ( i , j ) 를 중심으로 8개의 칸을 생각한다. 8개의 칸 중 하나의 칸을 선택해 돌려가면서 dx는 i의 값을 , dy 는 j의 값으로 배열을 ..

[C++]BFS_상하좌우 이동 배열(dx,dy)

BFS알고리즘 문제를 풀때 늘 사용하는 배열이 있다. int dx[] = {0,1,0,-1}; int dy[] = {1,0,-1,0}; 바로 이차원 배열의 탐색을 위해서 사용하는 dx와 dy배열이다. 이 배열을 이용해 상하좌우를 탐색하는데 지금까지 방향을 잘못알고있었다. 만약 이 배열이 동,남,서,북 이라는 것을 알고있다면 이 글을 읽을 필요 없다. 이런 당연한 배열을 포스팅할생각 없었지만 어제 https://www.acmicpc.net/problem/15683 15683번: 감시 스타트링크의 사무실은 1×1크기의 정사각형으로 나누어져 있는 N×M 크기의 직사각형으로 나타낼 수 있다. 사무실에는 총 K개의 CCTV가 설치되어져 있는데, CCTV는 5가지 종류가 있다. 각 CCTV가 감 www.acmicp..

[C++/BOJ] 백준 7576 토마토(BFS)

문제 : https://www.acmicpc.net/problem/7576 7576번: 토마토 첫 줄에는 상자의 크기를 나타내는 두 정수 M,N이 주어진다. M은 상자의 가로 칸의 수, N은 상자의 세로 칸의 수를 나타낸다. 단, 2 ≤ M,N ≤ 1,000 이다. 둘째 줄부터는 하나의 상자에 저장된 토마토 www.acmicpc.net 간단 풀이 : 1) 토마토을 입력받으면서 - 익은 토마토(1)가 들어온다면 q에 넣고 dis를 0으로 설정한다. - 익어야하는 토마토(0)이 들어온다면 dis를 -1으로 설정한다. 2) 전형적인 bfs의 while문을 돌린다. - 범위를 벗어나거나 -1이 아니라면(익지않은 토마토에서 값이 변경된경우) continue한다. - 새로운 위치의 dis를 원래 위치의 dis+1 ..

[C++/BOJ]백준 1012 유기농배추(BFS) 알고리즘 문제풀이

https://www.acmicpc.net/problem/1012 1012번: 유기농 배추 차세대 영농인 한나는 강원도 고랭지에서 유기농 배추를 재배하기로 하였다. 농약을 쓰지 않고 배추를 재배하려면 배추를 해충으로부터 보호하는 것이 중요하기 때문에, 한나는 해충 방지에 www.acmicpc.net BFS, DFS의 기본문제인 실버2 유기농 배추이다. BFS의 기초만 알고있다면 쉽게 풀수있다. 바킹독님 코드를 보며 공부했기때문에 코드는 갓킹독님의 BFS의 풀이와 유사할것이다. #include #include #define x first #define y second int dx[4] = {0,1,0,-1}; int dy[4] = {1,0,-1,0}; using namespace std; in..