DOTY
12) 백준 2468 - 안전 영역 본문
728x90
반응형
2468번: 안전 영역
재난방재청에서는 많은 비가 내리는 장마철에 대비해서 다음과 같은 일을 계획하고 있다. 먼저 어떤 지역의 높이 정보를 파악한다. 그 다음에 그 지역에 많은 비가 내렸을 때 물에 잠기지 않는
www.acmicpc.net
괜히 넘겨짚어서 이런이런...
#include <bits/stdc++.h>
using namespace std;
int pos_x[4] = {0, 1, 0, -1};
int pos_y[4] = {1, 0, -1, 0};
int building[100][100];
int check[100][100];
void dfs(int x, int y, int rain, int N) {
check[x][y] = 1;
for(int i = 0; i < 4; i++) {
int tmp_x = x + pos_x[i];
int tmp_y = y + pos_y[i];
if(tmp_x >= 0 && tmp_x < N && tmp_y >= 0 && tmp_y < N &&
check[tmp_x][tmp_y] == 0 && building[tmp_x][tmp_y] > rain) {
dfs(tmp_x, tmp_y, rain, N);
}
}
}
int main(void) {
int N;
cin >> N;
int highest = 0;
int lowest = 999;
for(int i = 0; i < N; i++) {
for(int j = 0; j < N; j++) {
cin >> building[i][j];
if(building[i][j] > highest) {
highest = building[i][j];
}
if(building[i][j] < lowest) {
lowest = building[i][j];
}
}
}
int answer = 1;
for(int c = lowest; c < highest; c++) {
int cnt = 0;
fill(&check[0][0], &check[99][100], 0);
for(int i = 0; i < N; i++) {
for(int j = 0; j < N; j++) {
if(check[i][j] == 0 && building[i][j] > c) {
cnt++;
dfs(i, j, c, N);
}
}
}
if(answer < cnt) {
answer = cnt;
}
}
cout << answer;
}
DFS 를 사용하였다. BFS로 풀 수 있지만 DFS를 연습하기 위함이랄까!
1. 가장 낮은 빌딩 높이와 높은 빌딩 높이를 저장한다.
2. 낮은 빌딩과 높은 빌딩 사이의 값만 비가 온다고 가정하면 된다.
3. DFS 한다!!!
나는 빌딩 조건중 가장 낮은 빌딩이 1 일수도 있어서... 그럼 혹시 비온다고 했으니까 비 오는 양도 1부터 시작하나...? 라고 생각한 문제. 하지만 그냥 신경 안써도 된다. 답이 나오는 최소 값은 1...
생각보다 잔디 매일 채우는게 쉽지는 않구나..ㅠㅠㅠㅠ
언리얼 공부 기록도 해야하는데.. 엉엉
728x90
반응형
'Algorithm > BFS&DFS' 카테고리의 다른 글
14) 백준 13023 - ABCDE (0) | 2023.03.30 |
---|---|
13) 백준 18352 - 특정 거리의 도시 찾기 (0) | 2023.03.09 |
11) 프로그래머스 Lv2 - 게임 맵 최단거리 (0) | 2023.02.16 |
10) 백준 1012 - 유기농 배추 (0) | 2023.01.23 |
9) 프로그래머스 Lv3 - 단어 변환 (0) | 2020.10.15 |
Comments