Machineboy空

Excercism - Binary Search : 이진탐색, 이진탐색 트리 본문

Computer/Coding Test

Excercism - Binary Search : 이진탐색, 이진탐색 트리

안녕도라 2025. 1. 22. 16:21

문제요약

이진탐색을 통해 찾는 숫자를 찾아 인덱스를 반환하라.

없다면 -1을 반환하라.

 

https://exercism.org/tracks/csharp/exercises/binary-search/iterations

 

Exercism

Learn, practice and get world-class mentoring in over 50 languages. 100% free.

exercism.org


난이도

Easy


풀이 포인트

  • Binary Search 아이디어

REVIEW

 

Excercism에서 푼 문제가 30여개가 넘어가다보니 느끼는 점은,

문제 구성이 참 좋다. 기본에 충실하면서도 다양한 CS 토픽이나, 흥미로운 스토리 들을 근간으로 문제를 내고 있어서 상식도 나름 쌓인다.

 

여튼 이진탐색을 또 오랜만에 풀었는데, 작동 원리가 이해는 가도 이를 코드로 옮기는 것이 아직도 힘들군 느꼈다..

또 막상 구현된 코드를 보면 정말 간단한데, 구현이 참 어렵단 말이지.

 

이런 탐색 코드는 하나쯤 외워두면 편할 것 같다.


CODE

using System;

public static class BinarySearch
{
    public static int Find(int[] input, int value)
    {
        // 이진 검색은 정렬된 배열에 동작.
        Array.Sort(input);

        int left = 0;
        int right = input.Length - 1;

        while (left <= right)
        {
            int mid = left + (right - left) / 2; // 중간 인덱스 계산

            if (input[mid] == value)
            {
                return mid; // 값을 찾음
            }
            else if (input[mid] < value)
            {
                left = mid + 1; // 오른쪽 절반을 탐색
            }
            else
            {
                right = mid - 1; // 왼쪽 절반을 탐색
            }
        }

        return -1;
    }
}