본문 바로가기

Algo/백준

(12)
4963: 섬의 개수 (그래프) import java.io.BufferedReader; import java.io.IOException; import java.io.InputStreamReader; import java.util.StringTokenizer; public class Main { static int W, H; static int[] dx = { -1, 1, 0, 0, -1, -1, 1, 1 }; static int[] dy = { 0, 0, -1, 1, -1, 1, 1, -1 }; static int[][] arr; static boolean[][] visited; public static void main(String[] args) throws IOException { BufferedReader br = new Buff..
2573: 빙산 (구현) 풀이 코드 import java.io.BufferedReader; import java.io.IOException; import java.io.InputStreamReader; import java.util.LinkedList; import java.util.Queue; import java.util.StringTokenizer; public class Main { static int N, M; static int[][] map; static boolean[][] visited; static int[] dx = { -1, 1, 0, 0 }; // 상하좌우 static int[] dy = { 0, 0, -1, 1 }; // 상하좌우 public static void main(String[] args) th..
3190: 뱀 (구현) 풀이 보드의 크기만큼 2차원 int배열을 만들어주고 먼저 사과의 좌표값들을 큐에 모두 넣어준다. 또 초를 담을 1차원 int 배열 하나와 그에 따라 명령어를 담아둘 1차원 char 배열을 하나 만들어 명령어를 다 넣어두었다. (스터디 후에 생각해보건대 class개념으로 대체하면 더 편할 것 같다.) 도착지점은 끝 모서리로 1로 표시해두었다. 이후 0, 0에서 시작하여 체크하며 지나가는데 해당 시간이 지나면 명령어를 받아 방향을 틀어주게 하였다. 또한 사과를 먹을때 뱀의 길이가 늘어나는 걸 이용하기 위해 queue에 이동한 좌표를 담아 사과를 먹었다면 그 위치를 다시 넣어줌으로써 길이를 유지하게 하였다. 코드 import java.io.BufferedReader; import java.io.IOExcept..
2564: 경비원 (구현) 풀이 역시나 단순 무식하게 코드를 짜보았다. 동근이가 있는 위치에 따라 각 거리를 switch와 if문을 활용하여 모두 체크해주었다. 마지막에 다 더해주면 끝! 코드 import java.io.BufferedReader; import java.io.IOException; import java.io.InputStreamReader; import java.util.StringTokenizer; public class Main { public static void main(String[] args) throws NumberFormatException, IOException { BufferedReader br = new BufferedReader(new InputStreamReader(System.in)); S..
8911: 거북이 (구현) 구현 단순무식하게 코드를 짜보았다. 거북이 처음위치를 0,0이라고 생각하고 왼쪽으로 간 최소의 x값, 오른쪽으로 간 최대의 x값, 위쪽으로 간 최대의 y값, 아래쪽으로 간 최소의 y값 중에 최소의 값들은 음수라면 절대값으로 바꿔 넓이를 구해 출력하게 해주었다. 코드 import java.io.BufferedReader; import java.io.IOException; import java.io.InputStreamReader; public class Main { public static void main(String[] args) throws NumberFormatException, IOException { BufferedReader br = new BufferedReader(new InputStrea..
11060: 점프점프 (DP) - 실패 풀이 뒤부터 체크해서 넘어가면 1로 설정하고 그 앞의 값은 해당하는 값만큼 앞의 수를 체크하는 방식으로 구현하였다. 하지만 모든 입출력에서 맞는데 왜 틀리는지는 잘모르겠음,, 코드 import java.io.BufferedReader; import java.io.IOException; import java.io.InputStreamReader; import java.util.StringTokenizer; public class Main { public static void main(String[] args) throws NumberFormatException, IOException { BufferedReader br = new BufferedReader(new InputStreamReader(System..
2491: 수열 (DP) 풀이 연속해서 커지는 경우가 가장 긴 길이를 한번 체크하고 연속해서 작아지는 경우가 가장 긴 길이를 한번 체크해서 둘 중에 더 큰 길이의 값을 출력한다. 코드 import java.io.BufferedReader; import java.io.IOException; import java.io.InputStreamReader; import java.util.StringTokenizer; public class Main { public static void main(String[] args) throws NumberFormatException, IOException { BufferedReader br = new BufferedReader(new InputStreamReader(System.in)); int N..
13398: 연속합2 (DP) 풀이 1912: 연속합 문제와 연결되는 문제이다. 처음 문제와 다른점은 하나의 수를 제거하는 경우까지 포함해서 생각해야된다는 점이다. 하나를 뺄 수도 있고 안뺄 수도 있으므로 원래의 dp와 하나를 뺀 dp값을 계산해야 하므로 2차원 배열의 dp를 사용한다. dp[1][i] = dp[1][i-1] + arr[i] 10 -4 3 1 5 6 -35 12 21 -1 dp[0] 10 6 9 10 15 21 -14 12 33 32 0 0 -4 3 4 9 15 -20 12 33 32 1 10 10 13 14 19 25 -10 12 33 32 2 10 6 6 7 12 18 -17 12 33 32 3 10 6 9 9 14 20 -15 12 33 32 4 10 6 9 10 10 16 -19 12 33 32 5 10 6 9..