코딩테스트/[백준] 코딩테스트 연습

    아기 상어 - 16236번

    아기 상어 - 16236번

    내 코드 import java.io.*; import java.util.*; public class Main { public static void main(String[] args) throws IOException { BufferedReader br = new BufferedReader(new InputStreamReader(System.in)); StringTokenizer st = null; int N = Integer.parseInt(br.readLine()); int[][] d = { { 1, 0 }, { -1, 0 }, { 0, 1 }, { 0, -1 } }; int[][] arr = new int[N][N]; PriorityQueue pq = new PriorityQueue(); boolea..

    감시 - 15683번

    감시 - 15683번

    내 코드 package com.company; import java.io.*; import java.util.*; public class Main { static int[][] arr; static int N, M, max, size; static int[][] direct = {{0, 1}, {1, 0}, {0, -1}, {-1, 0}}; static ArrayList cctv; public static void main(String[] args) throws IOException { BufferedReader br = new BufferedReader(new InputStreamReader(System.in)); StringTokenizer st = new StringTokenizer(br.readL..

    빵집 - 3109번

    빵집 - 3109번

    풀이 방법 최단 경로를 찾는 문제가 아닌 겹치지 않는 모든 경로를 찾는 문제이다. 위에서부터 탐색해서 경로를 찾으면 return 시켜주는 방식으로 풀이했고 경로를 찾지 못하게 되면 visited를 false로 바꾸는 것이 아니라 그 길로 가게되면 경로를 찾을 수 없기 때문에 true 상태로 남겨두었습니다. 내 코드 import java.io.*; import java.util.*; public class Main { static char[][] arr; static int R, C, count; static int[] direct = { -1, 0, 1 }; static boolean[][] visited; static boolean check; public static void main(String[]..

    가장 가까운 공통 조상 - 3584번

    가장 가까운 공통 조상 - 3584번

    풀이 방법 각 노드의 부모노드를 저장해주고 루트 노드는 그대로 0으로 두었다. findHeight 메서드를 이용해서 두 노드의 높이를 구해주면서 루트 노드까지 가는 과정에서 만난 노드들의 높이도 저장해 주었다. 가까운 공통 조상을 구하기 위해 먼저 높이를 낮은 쪽으로 맞춰주고 한 칸씩 부모로 가면서 구해주었다. 내 코드 package com.company; import java.io.*; import java.util.*; public class Main { static int[] tree, height; static int T, N, a, b; public static void main(String args[]) throws IOException { BufferedReader br = new Buffe..

    모래성 - 10711번

    모래성 - 10711번

    풀이 방법 파도에 깎일 수 있는 곳을 찾아서 큐에 넣어주고 각 시간마다 한번에 변화시켜준다. 만약 모래가 없어진다면 없어진곳 주변만 다시 비교해서 파도에 깎일 수 있는 곳인지 찾아주었다. 내 코드 package com.company; import java.io.BufferedReader; import java.io.IOException; import java.io.InputStreamReader; import java.util.*; public class Main { static int[][] way = {{-1, -1}, {-1, 0}, {-1, 1}, {0, 1}, {1, 1}, {1, 0}, {1, -1}, {0, -1}}; static int[][] arr; public static void ma..

    스타트링크 - 5014번

    스타트링크 - 5014번

    내 코드 package com.company; import java.io.BufferedReader; import java.io.IOException; import java.io.InputStreamReader; import java.util.*; public class Main { public static void main(String args[]) throws IOException { BufferedReader br = new BufferedReader(new InputStreamReader(System.in)); StringTokenizer st = new StringTokenizer(br.readLine()); int F = Integer.parseInt(st.nextToken()); int S ..

    호텔 - 1106번

    호텔 - 1106번

    내 코드 package com.company; import java.io.*; import java.util.*; public class Main { public static void main(String args[]) throws IOException { BufferedReader br = new BufferedReader(new InputStreamReader(System.in)); StringTokenizer st = new StringTokenizer(br.readLine()); int C = Integer.parseInt(st.nextToken()); int N = Integer.parseInt(st.nextToken()); int[] dp = new int[1101]; Arrays.fill(d..

    문제 추천 시스템 Version 1 - 21939번

    문제 추천 시스템 Version 1 - 21939번

    풀이 방법 TreeSet을 이용해서 최댓값, 최솟값을 쉽게 구하고자 했다. 배열에는 각 문제의 난이도를 저장해서 TreeSet에서 제거할 때 사용했다. 내 코드 package com.company; import java.io.*; import java.util.*; public class Main { public static void main(String args[]) throws IOException { BufferedReader br = new BufferedReader(new InputStreamReader(System.in)); StringTokenizer st = null; int N = Integer.parseInt(br.readLine()); int[] arr = new int[100001]..

    플로이드 2 - 11780번

    플로이드 2 - 11780번

    풀이 방법 플로이드 와샬 문제로 먼저 각 도시마다 최소 비용을 구해주었다. 구해주면서 경로를 알아야 하기 때문에 i -> j로 이동할때 가장 먼저 만나는 도시를 저장해주었다. 가장 먼저 만나는 도시를 이용해서 이동경로를 찾아주었다. 내 코드 package com.company; import java.io.*; import java.util.*; public class Main { static int N, M; static int[][][] arr; static ArrayList list = new ArrayList(); public static void main(String args[]) throws IOException { BufferedReader br = new BufferedReader(new I..

    최소 회의실 개수 - 19598번

    최소 회의실 개수 - 19598번

    풀이 방법 문제를 이해하는 과정에서 굳이 한 회의의 시작시간과 종료시간을 함께 묶어서 볼 필요가 없다고 생각했다. 그래서 시간대 별로 나열하고 그 시간이 시작시간인지 종료시간인지 표시해두었다. 같은 시간대일 경우를 고려해서 같으면 한번에 계산을 해주고 시작시간이면 count를 1증가시키고 종료시간이면 count를 1 감소해 주었다. 내 코드 package com.company; import java.io.BufferedReader; import java.io.IOException; import java.io.InputStreamReader; import java.util.Arrays; import java.util.StringTokenizer; public class Main { static int N;..