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)에 모두 사용할 수 있음.