투포인터의 개념을 잡을 수 있는 문제였다. 투포인터만 제대로 알면 금방 풀 수 있는 문제다. 코드에 주석을 자세하게 달아놓았다. package Beakjoon; import java.io.BufferedReader; import java.io.IOException; import java.io.InputStreamReader; import java.util.StringTokenizer; public class Main_2003 { /* 주어진 수열에서 i~j 까지 더했을 떼 M이 되는 경우의 수를 구해야 함 */ //투포인터 로직 제대로 알고 넘어가기 static int N, M; //숫자의 개수, 더해서 되어야 하는 숫자 static int [] arr; //수열을 넣어줄 배열 public static ..
분류 전체보기
푸는데 굉장히 오래 걸린 문제다. DFS로 풀어보려고 했는데 십자모양이나 다른 예외들을 확인할 수 없어서 조합 + BFS로 풀었다. 25개 중 7개를 뽑고 순열 배열에 담고 방문확인하는 과정이 어려웠다. char 입력을 int 좌표값으로 바꾸고 그 좌표값에 맞춰서 확인하는 과정을 다시 연습해봐야겠다. 코드에 주석을 자세하게 달아놓았다. package Beakjoon; import java.io.BufferedReader; import java.io.IOException; import java.io.InputStreamReader; import java.util.LinkedList; import java.util.Queue; public class Main_1941 { /* 25명의 여학생 고정 이다솜파 ..
조건이 많아서 너무 어려운 문제다. DFS를 기본으로 주어진 조건을 구현하는 문제였는데 이해하기 쉽지 않다. 다른 사람 코드를 참고해서 풀어봤는데 다시 복습이 꼭 필요한 문제같다. 코드에 주석을 달아놓았다. package Beakjoon; import java.io.BufferedReader; import java.io.IOException; import java.io.InputStreamReader; import java.util.StringTokenizer; public class Main_14503 { static int N, M; //배열 가로 세로 크기 static int r, c, d; //x좌표, y좌표, 방향 static int[][] arr; //배열 static boolean[][] v..
맨해튼거리가 1000 이하면 갈 수 있다는 조건으로 dfs를 사용해서 풀었다. 코드에 주석을 자세하게 달아놓았다. package Beakjoon; import java.io.BufferedReader; import java.io.IOException; import java.io.InputStreamReader; import java.util.Scanner; import java.util.StringTokenizer; public class Main_9205 { /* 50미터 당 한병씩 맥주 마셔야 함 1000미터에 20병 편의점에서 새 맥주 살 수 있음 가지고 있을 수 있는 맥주 최대 20병 */ static int T; //테스트케이스 static int N; //편의점 개수 //xy 좌표값을 갖는 c..
배열 전체를 0으로 채우고 직사각형 부분만 1로 바꾼 다음 0을 기준으로 bfs 돌려서 해결하였다. 코드에 주석을 자세하게 달아놓았다. package sliver; import java.io.BufferedReader; import java.io.IOException; import java.io.InputStreamReader; import java.util.ArrayList; import java.util.Collections; import java.util.LinkedList; import java.util.List; import java.util.Queue; import java.util.StringTokenizer; public class Main_2583_영역구하기 { /* * 왼쪽아래 꼭지점부..
일반인과 적록색약을 가지고 있는 사람의 두가지 경우를 나누어서 dfs를 짜면 어렵지 않게 풀 수 있는 문제였다. 코드에 주석을 자세하게 달아놓았다. package Beakjoon; import java.io.BufferedReader; import java.io.IOException; import java.io.InputStreamReader; public class Main_10026 { /* 적록색약 -> 빨강과 초록을 동일하게 인식 일반인과 적록색약이 보는 구역의 수를 각각 구하기 일반인 -> 빨강, 파랑, 초록 적록색약 -> 빨강+초록, 파랑 */ static int N; //배열 크기 static char [][] arr; static boolean [][] visited; static bool..
bfs를 돌면서 빙산의 4방에 바다가 몇개 있는지를 list에 담아놓고 한번에 녹여주었다. 반복을 돌 때마다 배열이나 리스트를 초기화 시켜주어야 하기 때문에 생각을 많이 해야하는 문제였다. 코드에 주석을 자세하게 달아놓았다. import java.io.BufferedReader; import java.io.IOException; import java.io.InputStreamReader; import java.nio.Buffer; import java.util.*; public class Main { /* 4방탐색 후 0의 개수만큼 얼음이 녹음 두 덩어리 이상으로 분리되는 최초의 시간을 구하기 두 덩어리 이상 분리 안 되면 0 출력 DFS로 풀어보자 DFS + BFS로 풀어야 할 듯???? */ stat..
치즈 바깥쪽 공기와 치즈 안쪽의 공기를 구별해서 치즈를 녹여야 했는데 어떻게 구분해야 하는지 고민을 오래 했다. 반대로 바깥쪽 공기를 기준으로 닿아있는 치즈들만 표시해 준 다음에 한꺼번에 녹여주는 방식으로 생각을 바꿔보니 쉽게 이해가 되었다. 코드에 주석을 자세하게 달아놓았다. package gold; import java.io.BufferedReader; import java.io.IOException; import java.io.InputStreamReader; import java.util.Arrays; import java.util.StringTokenizer; public class Main_2636 { /* * 공기와 닿아있는 치즈는 한시간 간격으로 녹음 치즈 내부의 0은 치즈를 녹이지 못 함..