백준 24264 문제<시간복잡도>

Frog Lemon·2024년 8월 14일
0

알고리즘

목록 보기
4/20
post-thumbnail


이번에도 시간복잡도 문제입니다.
입력값에 따라 실행횟수가 달라지며, for문이 두번 들어갔기 때문에 n의2제곱 번 실행됩니다.
그러므로 시간복잡도는 O(n2) 이 됩니다! 하지만 여기서 주의해야할것은 int형의 범위입니다.

  • int 형이 표현할 수 있는 범위는 -2,147,483,648(약 -21억 4천만)부터 2,147,483,647(약 21억 4천만)까지입니다
  • long 형이 표현할 수 있는 범위는 -9,223,372,036,854,775,808부터 9,223,372,036,854,775,807까지입니다.

여기서 입력받는 n의 범위는 1 이상 500,000입니다 저희는 입력받은 n을 2제곱 해야합니다.
최대값인 500,000을 2제곱하면?? 이런... 25억이 나오네요 범위를 초과했습니다.
때문에 저희는 long형태로 값을 받아야합니다. 이때 사용한것이 Math 클래스입니다.

Java 언어는 수학 함수 및 연산을 위한 포괄적인 라이브러리를 갖추고 있습니다. "Math" 클래스라고 하며 java.lang 패키지 에 있습니다 . 수학 라이브러리에는 기본 수치 연산, 삼각법, 최소-최대 찾기, 난수 생성 및 로그 연산을 위한 방법이 포함되어 있습니다. 이 Math 클래스에서 저는 숫자의 거듭제곱을 계산하는 데 사용되는 Math.pow() 메서드를 사용했습니다.

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;

public class Main {
    public static void main(String[] args) throws IOException {
        BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
        int N = Integer.parseInt(br.readLine());

        long count = (long) Math.pow(N, 2); // n의 2제곱 -> O(n2) 시간복잡도를 가진다
        System.out.println(count);
        System.out.println(2);
    }
}
profile
노력과 끈기를 추구합니다. 레몬이 좋아!

0개의 댓글