자바 백준 2776번
실버 4
https://www.acmicpc.net/problem/2776
2776번: 암기왕
연종이는 엄청난 기억력을 가지고 있다. 그래서 하루 동안 본 정수들을 모두 기억 할 수 있다. 하지만 이를 믿을 수 없는 동규는 그의 기억력을 시험해 보기로 한다. 동규는 연종을 따라 다니며,
www.acmicpc.net
문제 보기

분류: 자료 구조, 정렬, 이분 탐색, 해시를 사용한 집합과 맵
코드 풀이
import java.io.BufferedReader; import java.io.InputStreamReader; import java.io.IOException; import java.io.BufferedWriter; import java.io.OutputStreamWriter; import java.util.Arrays; public class Main { public static void main(String[] args) throws IOException { // 입력을 위한 BufferedReader와 출력을 위한 BufferedWriter 생성 BufferedReader br = new BufferedReader(new InputStreamReader(System.in)); BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(System.out)); // 테스트 케이스의 개수 입력 int T = Integer.parseInt(br.readLine()); // 테스트 케이스 수만큼 반복 for (int t = 0; t < T; t++) { // '수첩1'에 적혀 있는 정수의 개수 입력 int N = Integer.parseInt(br.readLine()); // '수첩1'에 적혀 있는 정수들을 저장할 배열 생성 int[] notebook1 = new int[N]; // '수첩1'에 적혀 있는 정수들을 공백을 기준으로 나눠서 배열에 저장 String[] nums1 = br.readLine().split(" "); // 정수들을 배열에 저장 for (int i = 0; i < N; i++) { notebook1[i] = Integer.parseInt(nums1[i]); } // '수첩1'에 적혀 있는 정수들을 정렬 Arrays.sort(notebook1); // '수첩2'에 적혀 있는 정수의 개수 입력 int M = Integer.parseInt(br.readLine()); // '수첩2'에 적혀 있는 정수들을 공백을 기준으로 나눠서 배열에 저장 String[] nums2 = br.readLine().split(" "); // '수첩2'에 적혀 있는 각 정수에 대해 반복 for (int i = 0; i < M; i++) { // 현재 검사할 정수 가져오기 int num = Integer.parseInt(nums2[i]); // '수첩1'에서 이분 탐색을 통해 정수가 있는지 확인하고 결과 출력 bw.write(binarySearch(notebook1, num) + "\n"); } } // BufferedWriter의 버퍼 비우고 닫기 bw.flush(); bw.close(); } // 이분 탐색을 통해 정수가 배열에 있는지 확인하는 메서드 private static int binarySearch(int[] arr, int target) { int left = 0; int right = arr.length - 1; while (left <= right) { int mid = (left + right) / 2; if (arr[mid] == target) { return 1; // 정수가 배열에 있음 } else if (arr[mid] < target) { left = mid + 1; } else { right = mid - 1; } } return 0; // 정수가 배열에 없음 } }
'공부하기 > 백준' 카테고리의 다른 글
[Java] 백준 풀기 25757 - 임스와 함께하는 미니게임 (0) | 2024.03.23 |
---|---|
[Java] 백준 풀기 15233 - Final Score (0) | 2024.03.23 |
[Java] 백준 풀기 1972 - 놀라운 문자열 (0) | 2024.03.19 |
[Java] 백준 풀기 15624 - 피보나치 수 7 (0) | 2024.03.18 |
[Java] 백준 풀기 5218 - 알파벳 거리 (0) | 2024.03.17 |