my study.

Coding Test/Softeer

[소프티어] 바이러스, java

fftl 2025. 2. 21. 08:11

- 문제

 

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

 

softeer.ai

- 풀이

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

public class Main {

    //자료형의 범위와 모듈러 분배 법칙을 이해하면 풀 수
    //있는 문제였습니다.
    
    public static void main(String[] args) throws Exception {

        //bufferedReader와 StringTokenizer를 통해 입력을 받습니다.
        BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
        StringTokenizer st = new StringTokenizer(br.readLine());

        //연산에 long 자료구조를 사용해야 하기 때문에 long으로 변환하여 담아줍니다.
        //int로 받을 경우 K마리가 P배로 증가하는 부분에서 문제가 발생할 수 있습니다.

        //K의 최대값 100,000,000와 P의 최대값 100,000,000의 곱은 미리 1,000,000,007 으로 모듈러
        //분배 연산을 하더라도 범위를 초과해 원하는 값을 구할 수 없습니다.
        //따라서 미리 long 자료구조를 통해 연산을 하여 이를 방지합니다.
        long K = Long.parseLong(st.nextToken());
        long P = Long.parseLong(st.nextToken());
        long N = Long.parseLong(st.nextToken());

        //for문을 통해 N초 동안 바이러스가 증가하는 것을 표현합니다.
        for(int i=0; i<N; i++){
            K = (K*P)%1000000007; //모듈러 연산을 미리미리 하여 줍니다.
        }

        //답을 출력합니다.
        System.out.println(K);
    }
}