// 알고리즘 1. 부분집합 2. check배열을 나올 수 있는 최대 수인 2000000 생성 3. 주어진 수의 부분집합을 구해 모두 더해서 check 배열에 표시 4. check배열을 1부터 시작하여 false인 값이 정답 더보기 import java.io.*; import java.util.*; public class 부분수열의합_14225 { static int N, arr[], ans; static boolean[] v; static boolean[] check; public static void main(String[] args) { Scanner sc = new Scanner(System.in); N = sc.nextInt(); v = new boolean[N]; check = new bool..
// 알고리즘 1. 시뮬레이션 2. 큐를 이용한 문제 -> 인덱스와 중요도를 하나의 클래스로 정의하여 큐에 집어넣음 -> 하나씩 poll 하고 남아있는 문서의 중요도를 확인 후 처리 -> 중요도를 담는배열 arr와 해당 문서를 처리하면 -1로 설정 더보기 import java.util.*; import java.io.*; public class 프린터큐_1966 { static int T, N, M, arr[], ans; static class Point { int idx, pr; public Point(int idx, int pr) { this.idx = idx; this.pr = pr; } } public static void main(String[] args) throws Exception { Bu..
// 알고리즘 1. bfs 2. 3개의 벽을 세움 -> v[N][M][N][M][N][M] 방문배열을 사용하여 중복계산제거 3. 벽을 세운 후 바이러스 퍼뜨리기 -> 기존의 map을 입력할 때 바이러스 위치를 dq에 저장해놓고 bfs 시작 시 dq에 있는 모든값을 q에 집어넣고 시작 -> 4방 탐색 -> 바이러스가 증식한 개수를 카운팅 4. 결과 -> 기존의 맵을 입력받을 때 0의 개수 카운팅 -> 0의 개수 - 증식한 개수 - 3(벽) -> 최대값 더보기 import java.util.*; import java.io.*; public class 연구소_14502 { static int N, M, ans,cnt_zero; static boolean v[][][][][][]; static Queue dq;..