GW LABS

[코드업 3002] 기억력 테스트 3 본문

Algorithm & DataStructure

[코드업 3002] 기억력 테스트 3

GeonWoo Kim 2020. 9. 1. 11:02

해당 문제는 이진 탐색을 연습할 수 있는 문제였다. 재귀함수를 이용해서 이진 탐색을 구현했지만 한 번에 구현하진 못했다. 탐색 범위를 잘 지정해주는 것이 이진 탐색 구현의 핵심인 것 같다. 

 

#include <iostream>

using namespace std;

int container[1000000];
int question[100000];

int binarySearch(int startIdx, int endIdx, int target) {
    if (startIdx > endIdx) return -1;

    int middle = (startIdx + endIdx) / 2;
    if (target < container[middle]) {
        return binarySearch(startIdx, middle - 1, target);
    }
    else if (target > container[middle]) {
        return binarySearch(middle + 1, endIdx, target);
    }
    else {
        return middle + 1;
    }
}

int main() {

    int numContainer;
    cin >> numContainer;
    for (int i = 0; i < numContainer; i++) {
        cin >> container[i];
    }

    int numQuestion;
    cin >> numQuestion;
    for (int i = 0; i < numQuestion; i++) {
        cin >> question[i];
    }

    for (int idx = 0; idx < numQuestion; idx++) {
        cout << binarySearch(0, numContainer-1, question[idx]) << " ";
    }
    
    return 0;
}

 

 

Comments