
int ar[19];
n = 배열의 길이;
lower = 0;
middle = 0;
upper = n-1;
변수 세 개를 설정한다.
for(;;)
{
	middle = (upper + lower) / 2;
    
    if(ar[middle] == key) printf("찾았습니다.") break;
    
    if (ar[middle] > key)
    {
    	upper = middle - 1;
    }
    else
    {
    	lower = middle + 1;
    }
    
    if (upper < lower)
    {
    	printf("불합격하셨습니다.");
        break;
    }
}
#include<stdio.h>
int BinarySearch(int* arr, int n, int key);
void main()
{
	int arr[] = { 2,6,13,19,21,21,23,29,35,48,62,89,90,95,99,102,109,208,629 };
	int n = sizeof(arr) / sizeof(arr[0]);
	int key = 0;
	printf("수험번호를 입력하세요 : ");
	scanf_s("%d", &key);
	int ret = BinarySearch(arr, n, key);
	if (ret == -1)
	{
		printf("불합격하셨습니다.\n");
	}
	else {
		printf("축하합니다. 합격하셨습니다.\n");
	}
}
int BinarySearch(int* arr, int n, int key)
{
	int lower = 0;
	int middle = 0;
	int upper = n - 1;
	for (int i = 0; i <= upper; i++)
	{
		middle = (upper + lower) / 2;
		if (arr[middle] == key)
		{
			return middle;
		}
		if (arr[middle] > key)
		{
			upper = middle - 1;
		}
		else
		{
			lower = middle + 1;
		}
		if (upper < lower)
		{
			return -1;
		}
	}
}
알고리즘을 작성하고 함수로 빼는 방법에 대해서는 강사님 코드가 많이 도움이 됐다.
처음 문제를 보고서는 for문 안에 for문을 반복해서 쓰는 걸까? 싶었지만 역시 그럴리가 없지...싶었다ㅠ ㅠ