✔ 점수따먹기[백준 1749]코드 구현하기/* * 문제 분석하기 * : 행렬에 따라 누적합 배열을 만든 후, 모든 부분 행렬에 따라 최대값을 갱신 *//* * 손으로 풀어보기 * 1. 누적합 배열 생성 * 2. 원하는 모든 부분 행렬에 따라 최대값을 갱신 * 3. 정수의 합이 최대가 되는 부분행렬의 합 출력 *//* * 1749) 점수따먹기 */public class Main { static BufferedReader br = new BufferedReader(new InputStreamReader(System.in)); static int N, M; static int[][] prefix_sum; // prefix_sum(누적합 배열) static int answer = Int..
✔ 넴모넴모 (Easy)[백준 14712]코드 구현하기/* * 문제 분석하기 * : 넴모가 올라간 칸 중 네 개가 2 x 2 사각형을 이루는지 확인하여 하나도 없다면 경우의 수 증가 * 이후 비어 있는 칸을 임의로 골라 넴모를 하나 올리기를 반복하며 없앨 수 있는 넴모가 없어 게임을 그만둘 수 있는 경우의 수를 구함 *//* * 손으로 풀어보기 * 1. 넴모가 올라간 칸 중 2 x 2 사각형을 이루는지 확인 * 격자판 위에 없앨 수 있는 넴모가 없어 게임을 그만둘 수 있다면 경우의 수 증가 * 2. 비어 있는 칸을 임의로 골라 넴모를 하나 올리기 * 3. 모든 칸만큼 넴모를 사용할 때까지 반복 * 4. 경우의 수를 출력 *//* * 14712) 넴모넴모_(Easy) */public class ..
✔ 마법사 상어와 비바라기[백준 21610]코드 구현하기/* * 문제 분석하기 * : 비바라기 마법을 시전한 칸에서 명령에 따라 이동한 후, 물복사버그 마법을 시전해 바구니의 물의 양을 변화시킴 * 이를 명령에 맞춰 M번 반복한 후, 바구니에 들어있는 물의 양의 합을 구해 출력함 *//* * 손으로 풀어보기 * 1. 비바라기 마법을 시전한 칸에서 명령에 따라 구름을 이동 * 2. 이동한 칸의 물의 양을 1 증가 * 3. 물복사버그 마법을 시전해 이동한 칸의 대각선 방향으로 거리가 1인 칸에 물이 있는 바구니의 수를 세서 물의 양을 증가 * 4. 이전에 구름이 생긴 칸을 제외하고 바구니에 저장된 물의 양이 2 이상인 칸에 구름이 생성되고 물의 양이 2 줄어듦 * 5. 이를 명령에 맞춰 M번 반복한..
✔ 부분 삼각 수열[백준 1548]코드 구현하기/* * 문제 분석하기 * : 세 수 중, 두 수를 더한 값이 나머지 하나의 수보다 클 경우 삼각관계를 만족하므로 * 이를 비교해보며 삼각관계가 될 수 있는 수들의 길이를 구함 *//* * 손으로 풀어보기 * 1. N이 2 이하이면 항상 삼각 수열이므로 N을 출력 * 2. N이 3 이상이라면 수를 정렬 * 3. 작은 수 + 그 다음 작은 수 > 가장 큰 수의 관계를 만족하도록 찾아가며 가장 긴 삼각수열의 길이를 구함 *//* * 1548) 부분_삼각_수열 */public class Main { static BufferedReader br = new BufferedReader(new InputStreamReader(System.in)); st..
✔ 토마토[백준 7569]코드 구현하기/* * 문제 분석하기 * : 익은 토마토의 상, 하, 좌, 우, 위, 아래를 탐색해 익지 않은 토마토가 있을 경우 익을 수 있도록 해줌 *//* * 손으로 풀어보기 * 1. 익은 토마토의 상, 하, 좌, 우, 위, 아래를 살펴보며 익지 않은 토마토가 있을 경우 익을 수 있도록 해줌 * 2. 토마토가 모두 익을 때까지의 최소 날짜를 출력 *//* * 7569) 토마토 */public class Main { static BufferedReader br = new BufferedReader(new InputStreamReader(System.in)); static int M, N, H; static int[][][] tomatoes; // tomato..
✔ 마법사 상어와 블리자드[백준 21611]코드 구현하기/* * 문제 분석하기 * : 마법에 따라 구슬을 제거하고, 구슬의 위치를 이동시키며 폭발한 구슬의 개수들을 찾도록 함 *//* * 손으로 풀어보기 * 1. 블리자드 마법 시전 : 4가지 방향과 거리에 따라 그 칸에 있는 구슬을 모두 파괴 * 2. 블리자드 마법 시전 : 파괴된 칸이 없도록 달팽이 모양으로 회전하며 구슬 이동 * 3. 구슬 폭발 : 달팽이 모양으로 4개 이상 연속하는 구슬이 있을 경우 모두 파괴 * 4. 구슬 폭발 : 팔괴된 칸이 없도록 달팽이 모양으로 회전하며 구슬 이동 * 5. 구슬 폭발 : 구슬을 이동하며 더 이상 폭발하는 구슬이 없을 때까지 반복 * 6. 구슬 변화 : 달팽이 모양으로 돌아가며 그룹을 찾아, 그룹에 들어 있는..
✔ 가장 긴 짝수 연속한 부분 수열 (large)[백준 22862]코드 구현하기/* * 문제 분석하기 * : 투 포인터를 사용해 범위를 정한 후, 최대 K번 삭제하여 가장 긴 짝수 부분 수열을 찾도록 함 *//* * 손으로 풀어보기 * 1. 투 포인터를 사용해 범위 정하기 * 2. 짝수가 아닐 경우 K번만큼 삭제 * 3. 가장 긴 짝수 부분 수열의 길이를 출력 *//* * 22862) 가장_긴_짝수_연속한_부분_수열_(large) */public class Main { static BufferedReader br = new BufferedReader(new InputStreamReader(System.in)); static int N, K; static int[] numbers; // ..