본문 바로가기

Algorithm/백준2

백준 7576번 - 토마토[BFS/Java] 문제 설명철수의 토마토 농장에는 여러 상자에 토마토가 보관되어 있다. 상자의 크기는 N×M 크기의 격자 형태로 구성되며, 각 칸에는 익은 토마토(1), 익지 않은 토마토(0), 또는 빈 칸(-1)이 존재할 수 있다. 하루가 지나면 익은 토마토는 인접한 네 방향(상, 하, 좌, 우)에 있는 익지 않은 토마토를 익게 만든다. 모든 토마토가 익는 데 걸리는 최소 일수를 계산해야 한다. 만약 익지 않은 토마토가 존재하나, 모두 익지 못하는 경우 -1을 출력하고, 처음부터 모든 토마토가 익어 있으면 0을 출력한다. 문제 접근이 문제는 최단 거리 탐색 문제로, 너비 우선 탐색(BFS, Breadth-First Search)를 통해 풀 수 있다. BFS는 시작점에서 가까운 노드부터 차례대로 탐색하는 방법으로, 인접한.. 2024. 10. 19.
백준 2133번 - 타일 채우기 (Java) https://www.acmicpc.net/problem/2133  타일 채우기 문제이다.  3xN 크기의 벽을 2x1, 1x2 크기의 타일로 채우는 경우의 수를 구하는 문제니까 일단, 3x1크기의 벽에 2x1, 1x2 크기의 타일을 넣어보자제일 왼쪽의 3 x 1의 타일에 1 x 2와 2 x 1의 타일은 넣을 수가 없다. 무조건 한 칸이 남는다. 3 x 3, 3 x 5 .. 등 홀수 크기의 벽은 채울 수가 없다.  그럼 짝수인 3 x 2의 경우의 수는 몇 개일까?2 x 1 타일과 1 x 2타일로 만들 수 있는 경우의 수는 총 3개다. dp[]라는 배열로 문제를 해결할 때 N이 2일 때는 3개인 것이다. 즉 dp[2] = 3이다. 3 x 3은 홀수니까 패스하고  3 x 4는 몇 개 일까? 어떻게 구할까? .. 2024. 7. 22.