Notice
Recent Posts
Link
- Today
- Total
hye-log
[SWEA]7733번 치즈 도둑(JAVA) 본문
0. 문제 링크
https://swexpertacademy.com/main/code/problem/problemDetail.do?contestProbId=AWrDOdQqRCUDFARG
SW Expert Academy
SW 프로그래밍 역량 강화에 도움이 되는 다양한 학습 컨텐츠를 확인하세요!
swexpertacademy.com
1. 문제 설명
1) N*N 모양의 치즈에 1~100 까지의 맛있는 정도가 있음
2) X번째 날에 X인 칸의 치즈를 먹는 요정이 100일동안 숨어 있음
3) 100일 중에서 치즈 덩어리가 가장 많을 때의 덩어리 개수 구학히
2. 입출력
// input
2
2
1 2
2 1
5
6 8 2 6 2
3 2 3 4 6
6 7 3 3 2
7 2 5 3 6
8 9 5 2 7
// output
#1 2
#2 5
3. 코드
import java.awt.Point;
import java.io.*;
import java.util.*;
public class swea7733 {
private static int N;
private static int[][] arr;
private static boolean[][] visited;
private static int[] dr = {0, 1, 0, -1};
private static int[] dc = {1, 0, -1, 0};
public static void main(String[] args) throws NumberFormatException, IOException {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
StringTokenizer st = null;
int T = Integer.parseInt(br.readLine());
for (int t = 1; t <= T; t++) {
int ans = 0; // 최대 덩어리의 개수
N = Integer.parseInt(br.readLine()); // 치즈의 한 변의 길이
arr = new int[N][N]; // 치즈 맛
int maxDay = 0; // 100일 중 치즈가 다 사라지는 날
for (int i = 0; i < N; i++) {
st = new StringTokenizer(br.readLine());
for (int j = 0; j < N; j++) {
arr[i][j] = Integer.parseInt(st.nextToken());
}
}
for(int day = 0; day <= 100; day++) { // 100일 동안
int temp = 0;
visited = new boolean[N][N]; // 방문 여부
for(int i = 0; i < N; i++) {
for(int j = 0; j < N; j++) {
if(arr[i][j] > day && !visited[i][j]) {
visited[i][j] = true;
dfs(i, j, day);
temp++;
}
}
}
ans = Math.max(ans, temp);
}
System.out.println("#" + t + " " + ans);
}
}
private static void dfs(int r, int c, int day) {
// basis part
// inductive part
for (int d = 0; d < 4; d++) {
int nr = r + dr[d];
int nc = c + dc[d];
if(nr >= 0 && nr < N && nc >= 0 && nc < N && arr[nr][nc] > day) { // 범위 내에 안 먹은 치즈이면
if(!visited[nr][nc]) { // 방문 전이면
visited[nr][nc] = true;
dfs(nr, nc, day);
}
}
}
}
}
실행 결과
4. 회고
1) X번째 일에 X보다 큰 값을 가진 요소를 제외하고 bfs로 탐색 후 치즈 덩어리의 개수를 구함
2) max를 통해 최대 치즈 덩어리의 개수를 구함
5. Github
https://github.com/iihye/Algorithm/blob/main/SWEA/swea7733.java
728x90
'CodingTest > SWEA' 카테고리의 다른 글
[SWEA]7793번 오! 나의 여신님(JAVA) (0) | 2023.08.16 |
---|---|
[SWEA]1953번 탈주범 검거(JAVA) (0) | 2023.08.14 |
[SWEA]7699번 수지의 수지 맞는 여행(JAVA) (0) | 2023.08.09 |
[SWEA]1952번 수영장(JAVA) (0) | 2023.08.08 |
[SWEA]1228번 암호문1(JAVA) (0) | 2023.08.08 |
Comments