1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 package Binary_Search; import java.io.BufferedReader; import java.io.IOException; import java.io.InputStreamReader; import java.util.Arrays; import java.util.StringTokenizer; public class BOJ2110 { static int N,C; static int ad[];..
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 package Binary_Search; import java.io.BufferedReader; import java.io.IOException; import java.io.InputStreamReader; import java.util.StringTokenizer; public class BOJ1072 { static long x, y, z, changeZ; public static void main(String args[]) throws IOException { BufferedRead..
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 package Binary_Search; 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 line[]; static int N; public static void main..
오답 노트 & 새로 알게 된 점 해당 문제는 매개 변수 탐색 방법을 사용하면 된다. 정해진 총액 이하에서 가능한 최대의 총 예산을 구해라 -> 예산이 n일 때, 정해진 총액을 만족하느냐를 구하면 된다. 여기서 이분 탐색을 실시할 때, e값을 생각해보아야한다. 만약에 e를 M의 최댓값인 10억이라고 잡는다면, 예제 입력2와 같이 총 나라의 예산을 합쳐도 총합 예산보다 작다면 상한액을 10억이라할 수 있기 때문이다. 즉, 모든 요청이 배정될 수 있는 경우에는 요청한 금액을 그대로 배정하면 된다. 코드 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 ..
(처음 시도) 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 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 woodArray[]; static int woodLength; public..
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 package Binary_Search; import java.io.BufferedReader; import java.io.IOException; import java.io.InputStreamReader; import java.util.*; public class Main { static int note[]; stat..
풀이 방법 이 문제를 처음에 풀면서 중복된 것을 생각 못하고 일반적인 이분 탐색으로 풀었다. 당연히 풀리지 않았다. 그래서 중복된 숫자를 배열의 index에 집어넣고 그 배열의 값을 한 개씩 증가시키는 방법을 사용하려 했다. 그러나 예제에 음수가 있는 것을 보고 그 방법이 안된다는 것을 알게 됐다. 그래서 마지막으로 생각한 것이 HashMap이었다. 이 문제를 풀면서 HashMap을 제대로 공부하게 되었다. 만약, 음수가 존재하지 않았다면 index에 집어넣는 방법도 나쁘지 않다고 생각한다. 그리고 이분 탐색하면서 꼭꼭 기억해야 하는 점이 있다면, binarySearch에서 sang[mid] == num 일 때, 꼭 return 해주어야 한다는 점이다. 사용 개념 HashMap / Map / 이분탐색 1..
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 package Binary_Search; import java.io.BufferedReader; import java.io.IOException; import java.io.InputStreamReader; import java.util.Arrays; import java.util.StringTokenizer; public class Main { static StringBuilder sb = new..
오답 노트 & 새로 알게 된 점 듣보잡 문제는 이분 탐색 문제이지만, 다루는 자료형이 String형이다. 이 문제를 풀면서 문자열에 관한 메소드를 많이 알아가게 됐다. 1. Arrays.sort는 배열을 오름차순으로 정렬해주는 메소드 2. Collections.sort는 List형을 오름차순으로 정렬해주는 메소드이다. compareTo 메소드를 볼 수 있다. 처음에는 구글링을 잘못하여 compareTo 메소드를 사용하면서 반환하는 숫자가 0 , -1, 1밖에 없다고 생각한 것이다. 그러나 compareTo 메소드는 A.compareTo(B) 일 때, A가 B보다 앞선다면 음수가 나온다. 물론 정확한 어떤 숫자가 반환되는지는 알 수 있다. 아스키코드를 이용하여, 포함되어 있는 문자에서 빼주면 되는데 이 부..
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 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 [] arr1; //있는지 확인하는 배열 static in..
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 import java.util.*; import java.io.*; 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()); long s = Long.parseLong(st.nextToken()); long sum = 0; long count = 0; /..

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 package BFS; import java.io.*; import java.util.*; public class Main { static int M,N; static int ad[][]; static boolean visit[][]; static int count = 0; s..