본문 바로가기
728x90

코딩테스트22

[백준1707] 이분 그래프 [java] 이 문제를 풀기 위해서 이분 그래프가 무엇인지 먼저 공부할 필요가 있었다!! 정말 쉽게!! 한 노드의 색깔이 빨간색이라고 하면 그와 연결된 노드들의 색깔은 파란색인 것이다. 하지만 그 파란색 노드들끼리는 연결되면 안된다. 즉 연결된 노드들은 서로 색깔이 달라야 하는 것이다. 나는 이 문제를 dfs를 이용해서 풀었다. 또한 방문했는지는 배열을 만들어 0,1,2을 입력해서 방문여부를 확인했다 0인 경우에는 방문 x, 1인 경우에는 part1, 2인 경우에는 part2인 것으로 만들었다. dfs메소드를 이용하여 모든 노드들의 part를 정하고 마지막에 연결된 노드인데 part가 같은 경우 "NO"를 출력하도록 했다. 코드 package baekjoon; import java.util.ArrayList; imp.. 2021. 3. 28.
[백준7569] 토마토 [java] 이전에 풀었던 토마토 문제와 비슷하지만 새로운 메소드를 만들지 않고 while문을 통해 풀었다. 또한 3차원으로 생각하고 문제를 풀었다. 상,하,좌,우,위,아래 총 6부분을 생각하면 된다 코드 package baekjoon; import java.util.LinkedList; import java.util.Queue; import java.util.Scanner; public class tomato2 { static int[] dx = {-1,0,1,0,0,0}; static int[] dy = {0,1,0,-1,0,0}; static int[] dz = {0,0,0,0,-1,1}; public static void main(String[] args) { Scanner sc = new Scanner(Sy.. 2021. 3. 27.
[백준7576] 토마토[java] 토마토가 익어가면서 옆으로 퍼지는 것이므로 bfs를 이용해서 풀었다!! 요즘 풀었던 dfs와 bfs처럼 상하좌우를 살펴야 하므로 미리 좌표를 선언해뒀다. 그리고 요번에는 띄어쓰기가 있는 문장을 받았으므로 BufferedReader를 사용해줬다. bfs메소드에서는 각각의 x,y를 큐에 넣고 빼줬다. 그러는 과정에서 토마토가 다 익은 날짜를 구해야 하므로 이전 값보다 +1씩 해줬다. 1. 입력받은 수들을 이차원 배열로 만들어준다 2. 1토마토가 있는 좌표를 큐에 넣는다. 3. 토마토 좌표 주위로 0토마토가 있으면 1토마토의 값을 +1한채로 더해주고 0토마토의 좌표를 큐에 넣어준다. 4. 마지막에 전체에서 0토마토가 남아있으면 -1을 출력하고 바로 return을 해준다. 아니면 이중배열의 원소들중 최댓값-1을.. 2021. 3. 23.
[백준2178] 미로 탐색 [java] 시작점부터 끝점까지의 최단거리를 구하면 되기 때문에 bfs로 문제를 풀었다. 한 점에서 상하좌우를 확인하고 1이면 지금 점에서 1을 더한 값을 넣어준다. 이런 방법으로 한 단계 나아갈 때마다 1씩 증가하고 목적지에 도달하면 처음시작에서 몇 단계 지났는지 알수 있다. 코드 package baekjoon; import java.util.LinkedList; import java.util.Queue; import java.util.Scanner; public class maze_search { static int[] dx = {0,0,1,-1}; static int[] dy = {1,-1,0,0}; static int[][] maze; static boolean[][] check; static int n,m;.. 2021. 3. 23.
[백준1012] 유기농 배추[java] 앞에서 풀었던 아파트 번호 붙이기와 매우 유사한 문제였다. 배추를 표시할 map과 방문했는지를 확인하기 위한 check를 이차원 배열로 만들고 위, 아래, 오른쪽, 왼쪽을 봐야하므로 dx와 dy를 만들어둔다dx[] = {0,0,1,-1}, dy[] = {1,-1,0,0}; 그리고 for문을 이용해 배추가 있는 곳은 map에서 1로 만들어 주고 방문하지 않고 map에서 1이면 dfs메소드를 통해 근처의 방문 여부를 확인해 주면 된다. 코드 package baekjoon; import java.util.Scanner; public class organic_cabbage { static int[][] map; static boolean[][] check; static int cnt=0; public stati.. 2021. 3. 23.
[백준2667] 단지번호붙이기 [ java] dfs로 문제를 풀어보았다. 방문했는지를 확인하기 위한 visit이차원 배열을 만들었다. 코드 package baekjoon; import java.util.Arrays; import java.util.Scanner; public class apart_num { public static int dx[] = {0,0,1,-1}; public static int dy[] = {1,-1,0,0}; public static int[] aparts = new int[25*25]; public static int n; public static int apartNum = 0; public static boolean[][] visit = new boolean[25][25]; public static int[][] ma.. 2021. 3. 22.
728x90