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
- MySQL
- 1차면접
- e-HR
- 뷰 리액트
- 뷰
- 사내시스템
- react
- 대문자
- CompositionAPI
- SBS 개발
- URL입력
- 프로젝트 후기
- 첫 리액트
- 백준알고리즘
- 트리
- 면접
- 알고리즘
- 백준
- IT시스템개발
- 뷰 리액트 비교
- 오라클
- 리액트
- 간단 프로젝트
- 첫 React
- Vue.js
- 경력직
- 쟈스
- 자바
- SBS 본사
- 웹 개발 면접 질문
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 |