Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
Tags
- 사내시스템
- 뷰
- 리액트
- 오라클
- 알고리즘
- e-HR
- 백준알고리즘
- IT시스템개발
- 뷰 리액트 비교
- 간단 프로젝트
- 대문자
- 뷰 리액트
- SBS 개발
- 경력직
- MySQL
- CompositionAPI
- 면접
- SBS 본사
- 프로젝트 후기
- Vue.js
- 첫 리액트
- react
- 백준
- 첫 React
- 자바
- 쟈스
- 트리
- 웹 개발 면접 질문
- URL입력
- 1차면접
Archives
- Today
- Total
리주의 프로그래밍 공부
[1920] 수 찾기 본문
이진 탐색 문제.
이진 탐색을 할때에는 반드시 정렬된 상태로 시행할것.
이진 탐색의 탐색 시간 : O(logN)
import java.io.IOException;
import java.util.Arrays;
import java.util.Scanner;
public class Main {
public static void main(String[] args) throws IOException {
Scanner sc = new Scanner(System.in);
int n = sc.nextInt();
int[] a = new int[n];
for(int i=0; i<n; i++) {
a[i] = sc.nextInt();
}
//이진 탐색을 위한 정렬
Arrays.sort(a);
int m = sc.nextInt();
for(int i=0; i<m; i++) {
int temp = sc.nextInt();
System.out.println(check(a, temp));
}
}
// 이진 탐색
public static int check(int[] a, int m) {
int left = 0;
int right = a.length - 1;
while(left <= right) {
int mid = (left + right) / 2;
// 수를 찾으면 1 반환
if(m == a[mid]) {
return 1;
}
// 중간값보다 클 경우, left 이동
if(m > a[mid]) {
left = mid + 1;
}
// 중간값보다 작을 경우, right 이동
else {
right = mid - 1;
}
}
// 수를 찾지 못했으면 0 반환
return 0;
}
}
'알고리즘 공부(백준)' 카테고리의 다른 글
[2293] 동전 1 (0) | 2021.01.04 |
---|---|
[11286] 절댓값 힙 (0) | 2021.01.02 |
[11279] 최대 힙 (0) | 2021.01.02 |
[10816] 숫자 카드 2 (0) | 2020.12.22 |
[2630] 색종이 만들기_java (0) | 2020.12.22 |