목록전체 글 (601)
sm 기술 블로그
import sys input = sys.stdin.readline N = int(input()) A = sorted(list(map(int, input().split()))) M = int(input()) B = list(map(int, input().split())) def binarySearch(array, target): start = 0 end = len(array) - 1 mid = (end+start)//2 while(end - start >= 0): if(array[mid] == target): return 1 elif(array[mid]
이분 탐색(Binary Search) 정렬되어 있는 배열에서 데이터를 찾으려 시도할 때, 순차탐색처럼 처음부터 끝까지 하나씩 모든 데이터를 체크하여 값을 차는 것이 아니라 탐색범위를 절반씩 줄여가며 찾는 방법이다. 예시) 1 2 3 4 5 6 라는 값에서 6을 찾고자 한다. 배열의 중간에 위치한 3이라는 값과 6을 비교한다. 6은 3보다 크므로, 이제 3의 왼쪽에 위치하는 값들은 탐색할 필요가 없으므로 3의 오른쪽에 있는 값들을 대상으로 탐색을 다시 시도한다. 이제 456 남았으므로 다시 중간값인 5와 찾고자하는 대상인 6을 비교한다. 6은 5보다 크므로, 5의 오른쪽에 있는 값들을 대상으로만 탐색을 다시 시도한다. 이제 6만이 남아았는데 6과 6을 비교하면, 값이 일치하므로 탐색을 종료한다. 자바 코드..
import java.util.*; import java.io.*; class Main { public static void main(String[] args) throws IOException { BufferedReader br = new BufferedReader(new InputStreamReader(System.in)); String[] tmp = br.readLine().split(" "); int N = Integer.parseInt(tmp[0]); int k = Integer.parseInt(tmp[1]); Integer[] x = new Integer[N]; tmp = br.readLine().split(" "); for (int i = 0; i < N; i++) { x[i] = Integ..