[알고리즘/이분탐색/BinarySearch] 왜 left+(right-left)/2는 overflow가 발생하지 않을까?
·
알고리즘
LeetCode에서 이분 탐색(Binary Search) 문제를 풀고 있는데 아무리 생각해도 굉장히 간단한 이분 탐색 문제로 쉽게 풀릴 거 같은데 계속 overflow가 발생해서 runtime error가 발생했다. 그래서 다른 사람의 코드를 확인해봤는데 문제는 바로 int mid = (left + right) / 2; 이 부분에 있었다. 여기서 계속 overflow가 발생했던 것인데 다른 사람들은 int mid = left + (right - left) / 2; 이렇게 사용하는 것이 아닌가! 대체 왜 이렇게 사용하면 overflow가 발생하지 않고 잘되는지 열심히 구글링하며 영어 해석하며 찾아봤다. 우선 저 오버플로우가 발생하는 원인에 대해서 알아보자. int mid = (left + right) / ..