-
14502 java코딩테스트 준비 2022. 10. 12. 17:26
최대의 공간을 확보하기 위해 벽이 3개를 설치 => 모든 경우를 DFS()로 탐색 ,벽 3개 설치
DFS를 통해 벽 3개 설치되면 바이러스부분에서 BFS를 한다
큐를 통해 바이러스 위치를 저장하고 바이러스에서 BFS
123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108import java.util.*;import java.io.*;public class Main {static final int dx[] = {0,0,1,-1};static final int dy[] = {1,-1,0,0};static int n,m;static int map[][];static int maxValue = -1;public static void main(String[] args) throws Exception {BufferedReader br = new BufferedReader(new InputStreamReader(System.in));StringTokenizer st = null;st = new StringTokenizer(br.readLine());n = Integer.parseInt(st.nextToken());m = Integer.parseInt(st.nextToken());map = new int[n][m];for(int i = 0; i<n; i++) {st = new StringTokenizer(br.readLine());for(int j =0; j<m; j++) {map[i][j] = Integer.parseInt(st.nextToken());}}dfs(0);System.out.print(maxValue);}static void dfs(int count) {if(count == 3) {bfs();return;}for(int i=0; i<n; i++) {for(int j = 0; j<m; j++) {if(map[i][j] == 0) {map[i][j] = 1;dfs(count+1);map[i][j] = 0;}}}}static void bfs() {Queue<Node> q = new LinkedList<>();for(int i = 0; i<n; i++) {for(int j = 0; j<m; j++) {if(map[i][j] == 2) {q.add(new Node(i,j));}}}int copyMap[][] = new int[n][m];for(int i =0; i<n; i++) {copyMap[i] = map[i].clone();}while(!q.isEmpty()) {Node now = q.poll();int x = now.x;int y = now.y;for(int k=0; k<4; k++) {int nx = x +dx[k];int ny = y + dy[k];if(nx >=0 && nx <n && ny >=0 && ny <m) {if(copyMap[nx][ny] == 0) {q.add(new Node(nx, ny));copyMap[nx][ny] = 2;}}}}zone(copyMap);}static void zone(int[][] copyMap) {int safe =0;for(int i=0; i<n; i++) {for(int j = 0; j<m; j++) {if(copyMap[i][j] == 0) {safe++;}}}if(maxValue < safe) {maxValue = safe;}}static class Node{int x;int y;Node(int x, int y){this.x = x;this.y = y;}}}cs https://www.acmicpc.net/problem/14502
14502번: 연구소
인체에 치명적인 바이러스를 연구하던 연구소에서 바이러스가 유출되었다. 다행히 바이러스는 아직 퍼지지 않았고, 바이러스의 확산을 막기 위해서 연구소에 벽을 세우려고 한다. 연구소는 크
www.acmicpc.net
'코딩테스트 준비' 카테고리의 다른 글
자료구조- 스택 .java (0) 2022.10.17 1157 java (0) 2022.10.12 sort()와 compare (0) 2022.08.11 현대 모비스 알고리즘 경진대회 예선 (1) 2022.07.01 백준 2629 c++ (0) 2022.06.30