Algorithm/Softeer

[Softeer] 바이러스

cks._.hong 2024. 1. 29. 20:06
 

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

 

softeer.ai

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

public class 바이러스 {
    public static void main(String[] args) throws IOException {
        BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
        StringTokenizer st = new StringTokenizer(br.readLine());

        long K = Integer.parseInt(st.nextToken());
        int P = Integer.parseInt(st.nextToken());
        int N = Integer.parseInt(st.nextToken());

        while(N > 0) {
            K = K % 1000000007 * P;
            N--;
        }
        System.out.println(K % 1000000007);
    }
}

 

  • 제약조건을 확인해보니 K의 값이 계속 갱신되면 int의 범위를 벗어날 거 같았다.
  • 정수 타입을 long 타입으로 선언을 하였고 모든 산수가 이뤄진 후 나머지를 계산하면 long의 범위도 벗어날 것이라 생각했다. 
  • 최종 바이러스 개수인 K의 값을 1000000007로 나머지 연산을 해서 출력하기 때문에 중간에 나머지 연산을 섞어 K의 값을 갱신해도 답은 같게 나온다.