< '2025/03 글 목록

2025/03 3

[C++ / 백준 7576번] 토마토

문제  시행 착오 두 개 이상의 토마토가 0일차에 들어 있을 때, 두 번 이상의 bfs 를 한 번에 하는 방법을 잠깐 고민했었다. 해결 방법 bfs 를 시작하기 전에 배열을 순회해 0일차 토마토의 좌표를 큐에 넣어놓고 bfs 를 시작했다. #define _CRT_SECURE_NO_WARNINGS#include #include using namespace std;/** 익은 토마토의 영향을 받아야 익는다.* 토마토가 없는 칸도 있을 수 있다.* */int tomato[1000][1000];int arr[1000][1000];bool visited[1000][1000];int M, N;int cnt = 0;queue> q;queue> q2;int dy[4] = { 1,0,-1,0 };int dx[4] = {..

[C++ / 백준 2178번] 미로 탐색

문제  시행 착오DFS 로 풀이하려다 시간 초과가 났다. 잘 생각해보니 DFS보단 BFS 가 훨씬 효율적이고 정확한 듯 해서 바꾸어서 풀었다.  해결 방법  #define _CRT_SECURE_NO_WARNINGS#include #include using namespace std;int N, M;int arr[100][100];int num[100][100];bool visited[100][100] = {false};queue > q;int x_dir[4] = { -1 , 1 , 0 , 0 };int y_dir[4] = { 0 , 0 , -1 , 1 };void bfs(int y, int x){ visited[y][x] = true; q.push(make_pair(y, x)); num[y][x]++; ..

[C++ / 백준 4963번] 섬의 개수

문제 시행 착오 fill 2차원 배열 초기화에 관해 이슈가 있었다. fill 의 두 번째 파라미터는 끝 주소를 포함하지 않기 때문에 끝 주소 + 1 을 해 주어야 올바르게 초기화가 되었다. 해결 방법 DFS를 이용해 범위 내에서 문제 조건에 따라 순회 해 주었다. DFS 가 끝날 때마다 cnt+1 을 시행했다.재방문은 그대로 리턴하도록 하였다. #include using namespace std;bool visited[50][50] = { false };int map[50][50]; int cnt = 0;int w, h;void dfs(int y, int x){ if (visited[y][x]) return; if (y = h || x = w) return; visited[y][x] = true; if ..