Algorithms/Softeer

[Java] Softeer 바이러스 (자료형 관리)

떼닝 2024. 10. 31. 22:52

[Java] Softeer 바이러스 (자료형 관리)

문제 링크 : https://softeer.ai/practice/6284

 

Softeer - 현대자동차그룹 SW인재확보플랫폼

 

softeer.ai

 

 

 

기록의 이유...

파이썬 쓰다가 자바로 넘어오니 이런 게 까다롭다

자료형을 신경쓰지 않으면 한순간에 틀린 정답이 되어버린다...

 

보통 제일 많이 사용하는 자료형이 정수(int)형인데 정수형의 범위는 -2,147,483,647 부터 2,147,483,647까지.

때문에 범위가 넘어갈 것 같으면 다른 자료형으로 변경해야한다.

 

출처 : https://www.w3schools.com/java/java_data_types.asp

 

제출 코드 (오답, int type 사용)

import java.io.*;
import java.util.*;

public class Main {

    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        int K = sc.nextInt();
        int P = sc.nextInt();
        int N = sc.nextInt();

        int result = K;
        for(int i=0;i<N;i++){
            result *= P;
            result %= 1000000007;
        }

        System.out.println(result%1000000007);
    }
}

 

일부러 값 좀 작게 한답시고 매번 곱하고 바로 모듈로 연산으로 처리해보려고 했으나...

그래도 값의 범위가 넘어가게 되면 제해지는 값들이 있게 되기 마련이다

으흐흑 ㅠ

 

제출 코드 (정답, long type 사용)

import java.io.*;
import java.util.*;

public class Main {

    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        int K = sc.nextInt();
        int P = sc.nextInt();
        int N = sc.nextInt();

        long result = K;
        for(int i=0;i<N;i++){
            result *= P;
            result %= 1000000007;
        }

        System.out.println(result%1000000007);
    }
}

 

사실 자료형 생각 못하고... 아 왜안돼 ㅠ 싶어서 다른 블로그 검색도 해봤다 ㅋㅎ

그랬더니 자료형 잘못이라고...

 

전에 다른 오빠가 코테 볼 때 로직은 다 짰는데 자료형을 long long 처리를 안 해서 틀렸을 것 같다고 얘기했었던 게 생각났다

자바는 이런 사소한 것들도 신경을 써야 하는구나... 이렇게 다시금 또 깨닫게 되는...

 

앞으로 신경 써서 풀자!

아이 러브 파이썬