본문 바로가기

프로젝트 & TIL/일별 공부 기록 (백엔드 스쿨)

55일차 - 알고리즘(이진 탐색)

https://school.programmers.co.kr/learn/courses/30/lessons/72412

 

프로그래머스

코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.

programmers.co.kr

이진 탐색

- 정렬된 배열에서 원하는 값을 빠르게 찾는 검색 알고리즘

- 배열을 반으로 나누어 가며 원하는 값을 찾기 때문에, 시간복잡도가 O(log n)으로 매우 빠르다.

  

public int binarySearch(int[] arr, int target) {
    int left = 0;
    int right = arr.length - 1;

    while (left <= right) {
        int mid = (left + right) / 2;

        if (arr[mid] == target) {
            return mid;
        } else if (arr[mid] < target) {
            left = mid + 1;
        } else {
            right = mid - 1;
        }
    }
    return -1;
}

  

문제 풀이

https://yurison.tistory.com/346

 

[프로그래머스/자바] 순위 검색

import java.util.ArrayList; import java.util.HashMap; import java.util.List; import java.util.Map; class Solution { public int[] solution(String[] info, String[] query) { int[] answer = new int[query.length]; Map map = makeIndex(info); for(int i=0; i< quer

yurison.tistory.com