본문 바로가기

Study for Backend/Algorithm

[Algorithm 기초 연습] 이진 탐색을 이용한 숫자 찾기

//이진탐색 - 숫자 찾기

import java.util.*;
class Solution {
	public int solution(int[] nums, int target){
		int answer = 0;
		int left = 0;
		int right = nums.length - 1; // 배열의 길이
		while(left <= right){ 
			int mid = (left + right)/ 2; //중간값 지정
			
			if(nums[mid] == target) return mid; 
            //배열의 중간 값이 타겟과 같으면 중간값으로 지정
			
			if(nums[mid] < target) left = mid + 1; 
            //배열의 중간 값이 타겟보다 작으면 왼쪽이 중간 값의 오른쪽으로 한칸 옆으로 감 
			
			else right = mid - 1; // 오른쪽이 중간값의 왼쪽으로 한칸 옆으로 감
		}
		
		return -1;
	}

	public static void main(String[] args){
		Solution T = new Solution();
		System.out.println(T.solution(new int[]{2, 5, 7, 8, 10, 15, 20, 24, 25, 30}, 8));
		System.out.println(T.solution(new int[]{-3, 0, 2, 5, 8, 9, 12, 15}, 0));
		System.out.println(T.solution(new int[]{-5, -2, -1, 3, 8, 9, 12, 17, 23}, 2));
		System.out.println(T.solution(new int[]{3, 6, 9, 12, 17, 29, 33}, 3));
		System.out.println(T.solution(new int[]{1, 2, 3, 4, 5, 7, 9, 11, 12, 15, 16, 17, 18}, 18));
	}
}