[Softeer] 바이러스(lv2) - C++

당고짱·2023년 2월 22일
0

coding-test

목록 보기
37/50
post-thumbnail

✏️ 문제

바이러스가 숙주의 몸속에서 1초당 P배씩 증가한다.

처음에 바이러스 K마리가 있었다면 N초 후에는 총 몇 마리의 바이러스로 불어날까? N초 동안 죽는 바이러스는 없다고 가정한다.

⛔️ 제약조건

  • 1 ≤ K ≤ 108인 정수
  • 1 ≤ P ≤ 108인 정수
  • 1 ≤ N ≤ 106인 정수

🎈 입력형식

첫 번째 줄에 처음 바이러스의 수 K, 증가율 P, 총 시간 N(초)이 주어진다.

🎈 출력형식

최종 바이러스 개수를 1000000007로 나눈 나머지를 출력하라.

🎈 입출력 예

<입력>
2 3 2
<출력>
18

👩‍💻 내 코드

따로 알고리즘 개념 없이 풀 수 있는 문제였던 것 같지만 나는 다이나믹 프로그래밍을 이용해서 풀었다. 레벨 2라서 확실히 쉬운 문제였던 것 같다.

#include<iostream>

using namespace std;

int N;
long long K, P;
long long dp[1000001];

// dp[A] = V
// V : A초 때 바이러스 수

int main(int argc, char** argv)
{
	cin >> K >> P >> N;

	dp[0] = K;

	for (int i = 1; i <= N; i++){
		dp[i] = (dp[i-1] * P) % 1000000007;
	}

	int answer = dp[N];
	cout << answer;
	
	return 0;
}
profile
초심 잃지 말기 🙂

0개의 댓글