[백준] 17471 게리 맨더링 - JAVA
·
Algorithm
백준 17471 게리 맨더링 GoldIII - JAVA 📌https://www.acmicpc.net/problem/17471문제 설명문제 풀이접근 💡- 1 부터 N 까지 숫자를 두 구역으로 나눌 수 있는 모든 경우의 수를 찾는다! - 구역을 나누고 한 구역 마다 인접해 있는지 확인한다! - 인접해 있다면 두 구역의 인구수 차를 구해 최솟값으로 갱신해준다! 첫 번째, 숫자(지역)를 두 구역으로 나눠보자.for (int i = 1; i (), visited);}//두 구역으로 나누는 메서드public static void combine(int start, int end, ArrayList groupA, boolean[] visited) { if (groupA.size() == end) { Arra..
[백준] 14502 연구소 - JAVA
·
Algorithm
백준 14502 연구소 GoldIV - JAVA 📌https://www.acmicpc.net/problem/14502문제 설명N X M 으로 주어진 배열에서 벽을 3개 세웠을 때, 안전 영역 크기의 최댓값을 구하는 문제문제 풀이접근 💡- 벽을 3개 세워야 한다. [2차원 배열을 탐색하면서 벽을 3개 세울 수 있는 모든 경우의 수 고려하기] 백트래킹 탐색- 벽이 3개 세워졌을 때 바이러스를 퍼뜨린다. [바이러스를 찾아 (상,하,좌,우)가 0일 때 퍼뜨려야 한다] BFS- 바이러스를 퍼뜨린 후 안전 영역의 개수를 카운트 한다. 우리는 안전 영역의 최댓값을 구해야 한다.즉 벽이 3개 세워진 경우마다 바이러스가 퍼진 후 안전 영역의 개수를 최댓값으로 갱신해주어야 한다.벽이 3개 세워진 경우의 배열을 bfs(..