CODING TEST/baekjoon
#2420 - 사파리월드
iamyuunzo
2025. 7. 7. 21:47
📌 문제 정보
- 문제 이름 : #2420번 - 사파리월드
- 문제 링크: https://www.acmicpc.net/problem/2420
📌 문제 요약
- 핵심 조건: |N-M| (절대값) 출력 (-2,000,000,000 ≤ N, M ≤ 2,000,000,000)
- 시간복잡도 제한: 없음
📌 내 풀이 및 코드
import java.util.Scanner;
public class Main {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
int N, M;
N = sc.nextInt();
M = sc.nextInt();
System.out.print(Math.abs(N-M));
}
}
<-- 내가 처음에 어떻게 풀었는지 -->
- 절대값을 어떤 문법을 써서 표현해야하는지 몰라서 구글링해서 Math.abs 함수를 써야한다는 힌트를 얻음.
- 값은 잘 나왔는데 틀렸다길래 원인을 찾아보니 (-2,000,000,000 ≤ N, M ≤ 2,000,000,000) 때문이었음.
📌 최종 정답 및 풀이
import java.util.Scanner;
public class Main {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
long N = sc.nextLong();
long M = sc.nextLong();
System.out.print(Math.abs(N - M));
}
}
<-- 풀이 요약 -->
- Java int의 범위 : -2,147,483,648 ~ 2,147,483,647
- N-M의 연산이 int 범위를 벗어남 : -2,000,000,000 - 2,000,000,000 = -4,000,000,000 (오버플로우 발생)
- long으로 바꾸면 약 ±9,000경까지 커버하기 때문에 범위가 넉넉해져서 안전함.
<-- 다른 풀이 요약 -->
- .
📌 새로 배운 문법
<-- 이번 문제에서 새로 배운 Java 문법 정리 -->
- Math.abs -> Math의 abs() 함수로 절대값을 구할 수 있음.
- 4가지의 숫자 타입(int, long, float, double)에 모두 사용할 수 있음.