Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | 6 | 7 |
8 | 9 | 10 | 11 | 12 | 13 | 14 |
15 | 16 | 17 | 18 | 19 | 20 | 21 |
22 | 23 | 24 | 25 | 26 | 27 | 28 |
29 | 30 | 31 |
Tags
- 주식 양도세 신고방법
- recursion example
- js 자동완성
- oracle group by
- 한국투자증권 해외주식 양도세
- bfs 미로탐색 java
- 피보나치함수 예제
- 재귀함수 예제
- 톰캣 실시간 로그
- katalon xpath
- 한국투자증권 양도세 신고
- katalon 비교
- 최대공약수 예제
- 테스트 자동화
- java.sql.SQLSyntaxErrorException
- katalon 사용법
- CSTS 폭포수 모델
- tomcat log
- 홈택스 해외주식 양도세
- katalon
- 해외주식 양도세 신고
- javascript 자동완성
- 피보나치 예제
- 국세청 해외주식 양도세 신고방식
- 재귀 예제
- Katalon Recorder 사용법
- 피보나치함수
- 해외증권 양도세 한국투자증권
- git 연동
- katalon 자동화
Archives
- Today
- Total
엄지월드
백준 2468 안전영역 본문
접근 방법
public static boolean dfs(int[][] map, int x, int y, int depth){
- DFS 진행
public static int simulation(int[][] map, int depth, int max)
- depth 이하의 숫자들 침수 시키기
- depth max값까지 침수 되지 않은 영역들 모두 탐색
헷갈렸던 케이스
- if(!visited[j][k] && map[j][k] > i){ ... } 부분이 헷갈렸었다. 즉, 숫자 1개만 독립적으로 있는 경우를 잘못 count 해주고 있었다.
3
9 1 1
1 1 9
9 9 9
소스
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.StringTokenizer;
public class BOK_2468 {
public static void main(String[] args) throws IOException {
solution();
}
static boolean[][] visited;
static int N;
public static void solution() throws IOException {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
N = Integer.parseInt(br.readLine());
int[][] map = new int[N][N];
int max = -1;
for(int i=0; i<N; i++){
StringTokenizer st = new StringTokenizer(br.readLine());
for (int j = 0; j < N; j++) {
map[i][j] = Integer.parseInt(st.nextToken());
if(map[i][j] > max) max = map[i][j];
}
}
int result = -1;
for (int i = 0; i <= max; i++) {
int cnt = 0;
visited = new boolean[N][N];
for (int j = 0; j < N; j++) {
for (int k = 0; k < N; k++) {
if(!visited[j][k] && map[j][k] > i){
// System.out.println(j+" "+k +" "+i);
cnt += dfs(map, j, k, i);
}
}
}
// System.out.println(i+" "+cnt);
result = Math.max(result, cnt);
}
System.out.println(result);
}
public static int dfs(int[][] map, int x, int y, int depth){
int dx[] = {-1, 1, 0, 0};
int dy[] = {0, 0, -1, 1};
visited[x][y] = true;
for(int i=0; i<4; i++){
int nowX = x + dx[i];
int nowY = y + dy[i];
// 범위 내인지 확인
if(nowX < N && nowY < N && nowX >= 0 && nowY >=0){
// 방문하지 않았고, 물의 깊이가 depth 초과이면 안전구간 세기
if(!visited[nowX][nowY] && map[nowX][nowY] > depth){
// check = true;
visited[nowX][nowY] = true;
dfs(map, nowX, nowY, depth);
}
}
}
// return check;
return 1;
}
}
'알고리즘' 카테고리의 다른 글
백준 1987 알파벳(DFS) (0) | 2022.08.23 |
---|---|
백준 7562 나이트의 이동 (0) | 2022.08.22 |
[Leetcode] sliding window median java (0) | 2022.08.13 |
[프로그래머스] 가사 검색 (0) | 2022.08.11 |
[백준] 4963 섬의 개수(DFS) (0) | 2022.08.05 |
Comments