반응형
문제
다음 프로그램을 실행시켰을 때, "true"를 출력하는 변수 x의 자료형과 값을 찾는 프로그램을 작성하시오.
1
2
3
4
5
6
7
8
9
10
11
|
import java.util.*;
public class Main {
public static void main(String[] args) {
??? x = ???;
if (x != 0 && x == -x) {
System.out.println("true");
} else {
System.out.println("false");
}
}
}
|
실행 환경은 BOJ 채점 서버의 Java 실행 환경과 같다.
입력
입력은 없다.
출력
첫째 줄에 변수 x의 자료형과 값을 공백으로 구분해 출력한다. 자료형은 int와 long만 가능하다. 출력한 값이 자료형에 알맞지 않은 경우에는 틀리게 된다.
값은 아래 소스가 런타임 에러 없이 읽을 수 있는 값을 의미한다.
1
2
3
4
5
|
String val = "유저가 출력한 값";
// int의 경우
int temp = Integer.parseInt(val);
// long의 경우
long temp = Long.parseLong(val);
|
예제 입력 1 복사
예제 출력 1 복사
int 5
예제 입력 2 복사
예제 출력 2 복사
long 50
이 문제 같은 경우는 시큐어 코딩 문제에서 자주 나오는 기믹 같은 문제였다.
정수는 2147483647까지 담을 수 있는데
음수는 -2147483648까지 담을 수 있다.
그러나 여기서 문제에 조건에서 (x != 0 && x == -x) 라는 조건이 보이는가?
x = -2147483648이 들어가게 되었는데
여기서 재미난 것은 -(-2147483648) 이 되게 되면 +가 되버리면서
범위를 벗어나게 되고 오버플로우가 되버려서 같은 값으로 인식이 되버린다.
반응형
'알고리즘' 카테고리의 다른 글
[BAEKJOON] 18108 1998년생인 내가 태국에서는 2541년생?! (0) | 2023.08.10 |
---|---|
[BAEKJOON] 9655 돌 게임 (0) | 2023.08.09 |
[BAEKJOON] 11723 집합 (0) | 2023.08.08 |
[BAEKJOON] 1157 단어 공부 (0) | 2023.08.06 |
[BAEKJOON] 23971 ZOAC 4 (0) | 2023.08.05 |