반응형
정수형 및 값의 범위가 있는 타입의 중간값을 구할때 실수하는 것이 있다.
int mid = (a + b) /2
이 경우 a 와 b 가 작은값이면 상관없지만 int 범위 2,147,483,647 가까이 되는 숫자 21억 등의 숫자를 계산할때는 위와 같은 숫자 계산은 오버플로우가 난다.
그러므로 다음과 같이 수정해야 하다.
int start = 2_000_000_000;
int end = 1_000_000_000;
int mid = start + (end - start) / 2;
반응형
'알고리즘' 카테고리의 다른 글
[Java][알고리즘] LinkedList (0) | 2021.01.11 |
---|---|
배열 값 for 문 순환 하면서 몇번째 순환할때 배열값이 작아지는지 배열 재생성 (0) | 2020.12.31 |
두개의 array 에서 빠진 요소 찾기. 중복 array 고려 (0) | 2020.12.28 |