본문 바로가기

Algorithm/Baekjoon

[백준_JAVA_알고리즘] 24264 알고리즘 수업 - 알고리즘의 수행 시간 3

import java.util.Scanner;

public class Main {
    public static void main(String[] args){
        Scanner scanner = new Scanner(System.in);
        int n = scanner.nextInt();
        
        System.out.println(n * n);
        System.out.println(2);
        
        scanner.close();
    }
}

다음은 틀린 코드이다..

 

n의 자료형을 long으로 바꾸면 된다.

import java.util.Scanner;

public class Main {
    public static void main(String[] args){
        Scanner scanner = new Scanner(System.in);
        long n = scanner.nextInt();
        
        System.out.println(n * n);
        System.out.println(2);
        
        scanner.close();
    }
}

자료형이 int이면 오버 플로우가 발생할 수 있다.

int의 범위: -2^31 (-2,147,483,648)부터 2^31 - 1 (2,147,483,647)까지

long의 범위: -2^63 (-9,223,372,036,854,775,808)부터 2^63 - 1 (9,223,372,036,854,775,807)까지이다.

 

int형은 4바이트(32비트), long형은 8바이트(64비트)이기 때문이다.

 

즉, n * n의 범위는 long 범위 안에 속해야 한다.