![[Java] 백준 1920번 문제 (수 찾기)](https://img1.daumcdn.net/thumb/R750x0/?scode=mtistory2&fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbsTbxF%2Fbtsq2iNDPEk%2Fgp4lcws1Mz2qZ2aJkER4dk%2Fimg.png)
[Java] 백준 1920번 문제 (수 찾기)자료구조 & 알고리즘/BOJ2023. 8. 13. 08:42
Table of Contents
문제설명
소스코드
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.Arrays;
import java.util.StringTokenizer;
public class Boj_1920
{
public static void main(String[] args) throws IOException
{
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
int n = Integer.parseInt(br.readLine());
int[] nArr = new int[n];
StringTokenizer st = new StringTokenizer(br.readLine());
for (int i = 0; i < n; ++i) nArr[i] = Integer.parseInt(st.nextToken());
int m = Integer.parseInt(br.readLine());
int[] mArr = new int[m];
st = new StringTokenizer(br.readLine());
for (int i = 0; i < m; ++i) mArr[i] = Integer.parseInt(st.nextToken());
Arrays.sort(nArr);
for(int i : mArr)
{
// if(Arrays.binarySearch(nArr, i) >= 0) System.out.println(1); // 이미 누군가 구현해놓은 이진탐색 라이브러리
if(binarySearch(nArr, i) >= 0) System.out.println(1);
else System.out.println(0);
}
}
static int binarySearch(int[] arr, int value)
{
int leftPtr = 0;
int rightPtr = arr.length - 1;
while (leftPtr <= rightPtr)
{
int mid = (leftPtr + rightPtr) / 2;
if(arr[mid] == value) return mid; // 찾은 경우
if(arr[mid] > value) rightPtr = mid - 1; // 왼쪽 부분 탐색
else leftPtr = mid + 1; // 오른쪽 부분 탐색
}
return -1;
}
}
설명
- 수의 범위가 매우 크기 때문에 선형 탐색을 하면 무조건 시간 초과가 날 것으로 판단했다.
- 그래서 이진 탐색으로 구현했다.
- Arrays.binarySearch API를 이용하여 간단하게 구현했다.
2023.01.27 - [자료구조 & 알고리즘/알고리즘] - [JAVA] 이진 검색(Binary Search)
[JAVA] 이진 검색(Binary Search)
Do it! 자료구조와 함께 배우는 알고리즘 입문[자바편] 연습문제와 실습문제입니다. 이진 검색 이진 검색은 선형 검색보다 좀 더 빠르게 검색할 수 있다는 장점이 있다. 하지만 이진 검색은 데이
rebugs.tistory.com
'자료구조 & 알고리즘 > BOJ' 카테고리의 다른 글
[Java] 백준 9663번 문제 (N-Queen) (0) | 2023.08.29 |
---|---|
[Java] 백준 1302번 문제 (베스트 셀러) (0) | 2023.08.13 |
[Java] 백준 11728번 문제 (배열 합치기) (0) | 2023.08.12 |
[Java] 백준 11729번 문제 (하노이 탑 이동 순서) (0) | 2023.08.11 |
[Java] 백준 14916번 문제 (거스름 돈) (0) | 2023.08.11 |