두 정수 사이의 합

송준희·2021년 1월 13일
0

알고리즘

목록 보기
12/44

초등학교 때 수학 만화책을 본 적이 있다면 이런 문제를 쉽게 풀 수 있을 것이다.

1, 2, 3, 4 ... 98, 99, 100까지 하나씩 더하지 않고

1과 100의 합은 101이고 101이 1부터 100사이에 50개 있구나! 가 풀이이다.

문제풀이


for(char i = 0; i < 1000; i++) {
	i += 10;
}
pritnln(i);

위의 코드에서 마지막에 출력될 i의 값을 구할 수 있는가?

정답은 println()을 실행하지 않는다.

그 이유는 char로 표현할 수 있는 값의 범위가 -128~127 이기 때문에

127: 01111111(2) 에 1을 더했을 때 -128: 10000000(2) 이 나오므로

무한 loop에 빠지게 된다.


마찬가지로 int로 표현할 수 있는 값의 범위는 -21억~21억 정도이다.

그렇기 때문에 입력받은 숫자의 범위가 매우 클 경우

두 정수 사이의 합이 int형으로 표현할 수 있는 수의 범위를 넘을 수 있기 때문에

long 타입으로 캐스팅해줘야 제대로 된 답을 구할 수 있다.

profile
오늘 달리면 내일 걸을 수 있다!

0개의 댓글