본문 바로가기

분류 전체보기

(263)
[백준] 1991 : 트리 순회 JAVA 풀이 import java.io.*; import java.util.*; public class Main { static class Node{ char data; Node left; Node right; Node(char data){ this.data = data; } } static int N; static Node[] arr; public static void main(String[] args)throws IOException{ BufferedReader br = new BufferedReader(new InputStreamReader(System.in)); StringTokenizer st; N = Integer.parseInt(br.readLine()); // 노드의 배열 생성 arr = new Nod..
[백준] 2146 : 다리 만들기 JAVA 풀이 1. 각각의 섬에 번호를 붙인다. 2. 각 섬에서 bfs를 수행해 다른 섬으로 가는 다리를 구해서 짧은 것으로 업데이트한다. import java.io.*; import java.util.*; public class Main { // 지도의 크기 static int N; // 섬에 붙일 번호 // 0은 바다, 1은 섬이니 2부터 static int landNum = 2; static int[][] map; static boolean[][] visit; // 가장 짧은 다리의 길이 static int answer = Integer.MAX_VALUE; // 방향 배열 static int[] dx = {0,0,-1,1}; static int[] dy = {1,-1,0,0}; static class Node{ ..
[백준] 2178 : 미로 탐색 JAVA 풀이 최단 거리를 구하는 문제는 bfs를 사용하기 import java.io.*; import java.util.*; public class Main { static class Point{ int x; int y; Point(int x, int y){ this.x = x; this.y = y; } } // 상하좌우로 이동할 때 사용할 방향배열 static int[] dx = {0,0,-1,1}; static int[] dy = {1,-1,0,0}; static int[][] graph; static boolean[][] visit; static int N; static int M; static Queue queue = new LinkedList(); public static void main(String[] ..
[백준] 7569 : 토마토 JAVA 풀이 7576번과 같은 토마토 문제인데 이번엔 3차원이다. 크게 다를 건 없었지만 이래저래...배열의 인덱스에서 실수를 많이 했다. import java.io.*; import java.util.*; public class Main { // 토마토 클래스 static class Tomato{ int z; int x; int y; // 생성자 Tomato(int z, int x, int y){ this.z=z; this.x=x; this.y=y; } } // 위 아래 왼쪽 오른쪽 위 아래 static int[] dz = {1,-1,0,0,0,0}; static int[] dx = {0,0,-1,1,0,0}; static int[] dy = {0,0,0,0,1,-1}; static int M; static int..
[백준] 7576 : 토마토 JAVA 풀이 익은 토마토의 주변을 점진적으로 탐색해야 하기 때문에 bfs를 사용했다. import java.io.*; import java.util.*; public class Main { static int[] dx = {0,0,-1,1}; static int[] dy = {1,-1,0,0}; static int[][] box; static int N; static int M; static Queue queue = new LinkedList(); static class Tomato{ int x; int y; Tomato(int x, int y){ this.x=x; this.y=y; } } public static void main(String[] args) throws IOException { BufferedRea..
[백준] 4963 : 섬의 개수 JAVA 풀이 땅인 부분에서 dfs나 bfs를 수행해서 하나의 섬을 다 탐색하고 그때마다 섬의 개수를 하나씩 증가시켜주면 되는 어렵지 않은 문제였다. import java.io.*; import java.util.*; public class Main { // 상하좌우, 대각선으로 이동하기 위한 좌표 static int[] dx = {0,0,-1,1,-1,-1,1,1}; static int[] dy = {1,-1,0,0,1,-1,1,-1}; // 지도와 해당 칸을 방문했는지 확인하기 위한 배열 static int[][] graph; static boolean[][] visit; // 섬의 개수 static int cnt = 0; static int W; static int H; public static void main..
[백준] 2667 : 단지번호 붙이기 JAVA 풀이 import java.io.*; import java.util.*; public class Main { // 상하좌우 이동을 위한 좌표배열 static int[] dx = {0,0,-1,1}; static int[] dy = {1,-1,0,0}; static int N; static int[][] graph; // 지도를 저장할 배열 static boolean[][] visit; // 방문했는지 체크하기 위한 배열 static int[] aparts = new int[25*25]; // 각 단지의 아파트 수 static int apartNum = 0; // 단지의 수 public static void main(String[] args) throws IOException{ BufferedReader br ..
[백준] 2331 : 반복수열 JAVA 풀이 그래프 카테고리에 있지만 그래프를 어떻게 적용해야 할지 모르겠어서 우선 어레이리스트로 풀어봤다. 1. A와 P를 입력받는다. 2. 순열을 저장할 어레이리스트를 생성한다. 3. D[1]이 되는 A를 리스트에 추가한다. 4. D[n-1]의 각 자리수를 P제곱한 합인 sum 구한다. 5-1. 4에서 구한 sum이 리스트에 이미 있다면 그 값의 인덱스를 출력하고 반복문을 종료한다. ( 반복수열을 제외한 수의 개수 = sum 앞에 있는 수의 개수. sum부터는 반복수열 ) 5-2. 4에서 구한 sum이 아직 리스트에 없는 값이라면 리스트에 추가한다. import java.io.*; import java.util.*; public class Main { public static void main(String[] a..