https://www.codetree.ai/missions/8/problems/find-number-fast?&utm_source=clipboard&utm_medium=text
코드트리 | 코딩테스트 준비를 위한 알고리즘 정석
국가대표가 만든 코딩 공부의 가이드북 코딩 왕초보부터 꿈의 직장 코테 합격까지, 국가대표가 엄선한 커리큘럼으로 준비해보세요.
www.codetree.ai
이 문제는 배열 내에서 이진탐색을 이용해서 주어진 수를 빠르게 찾아 출력해야합니다.
나는 일반적인 이진탐색 방법으로 문제를 풀었다.
우선, 배열에 주어진 수를 배열에 넣고 정렬했습니다. 그 다음, 현재 탐색하고 있는 부분배열의 왼쪽과 오른쪽을 나타내는 변수를 각각 설정한 다음 이 두 인덱스의 가운데 값을 원하는 값과 비교해서 더 크다면 왼쪽을 나타내는 변수를 mid + 1로 설정하였고, 더 작다면 오른쪽을 나타내는 변수를 mid-1하였다.

import java.io.*;
import java.math.*;
import java.util.*;
public class Main {
    public static void main(String[] args) throws IOException{
        BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
        StringTokenizer st = new StringTokenizer(br.readLine());
        StringBuilder sb = new StringBuilder();
        int n = Integer.parseInt(st.nextToken());
        int m = Integer.parseInt(st.nextToken());
        //int[] arr= new int[100000];
        int[] arr = new int[n];
         st = new StringTokenizer(br.readLine());
        for(int i = 0;i<n;i++){
            arr[i] = Integer.parseInt(st.nextToken());
        }
        Arrays.sort(arr);
        for(int i = 0;i<m;i++){
            int a = Integer.parseInt(br.readLine());
            int left = 0;
            int right = n-1;
            int mid = 0;
            while(left <= right){
                mid = (left + right) /2;
                if(arr[mid] == a) {
                    sb.append((mid+1) + "\n");
                    //System.out.println(mid);
                    break;
                }
                else{
                    if(arr[mid] < a){
                        left = mid + 1;
                    }
                    else{
                        right = mid -1;
                    }
                }
            }
            if(left > right){
                sb.append(-1 + "\n");
             }     
            }
        System.out.println(sb);
        
    }
}
'알고리즘 > 코드트리 문제풀이' 카테고리의 다른 글
| 코드트리 [자바 java] 동전 더하기 (0) | 2023.09.10 | 
|---|---|
| 코드트리 [자바 java] 자연수 n개의 합 (0) | 2023.09.10 | 
| 코드트리 [자바 java] 정수 명령 처리 6 (2) | 2023.09.08 | 
| 코드트리 [자바 java] TreeSet 기본 (1) | 2023.09.06 | 
| 코드트리 [자바 java] HashSet 기본 (1) | 2023.09.06 | 
 
										
									 
										
									 
										
									