eaz_coding

[Softeer] 바이러스 본문

eaz_algorithm

[Softeer] 바이러스

eaz_silver 2023. 12. 31. 02:00

문제

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

 

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

제약조건

1 ≤ K ≤ 108인 정수

1 ≤ P ≤ 108인 정수

1 ≤ N ≤ 106인 정수

입력형식

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

출력형식

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

입력예제1

2 3 2

출력예제1

18


풀이

풀이1 오답

import sys
input = sys.stdin.readline

k, p, n = map(int, input().split())

for i in range(n):
  k = (k*p)

print(k%1000000007)

 

풀이 자체는 틀리지 않았는데 제약조건에서 수가 커지면 연산이 너무 커져서 시간초과가 발생하는것 같다.


풀이2

import sys
input = sys.stdin.readline

k, p, n = map(int, input().split())

for i in range(n):
  k = (k*p)%1000000007

print(k)

 

첫번째 풀이와 달라진 것은 나머지를 구하는 것을 반복문 안으로 넣어줬다.

어차피 나는 1000000007으로 나눈 나머지만 필요하기 때문에 나머지로만 연산을 계속해주면 값이 같게 나온다. 

'eaz_algorithm' 카테고리의 다른 글

[Programmers] 교점에 별 만들기  (1) 2024.01.02
[Programmers] 최솟값 만들기  (0) 2023.12.31
[Softeer] 금고털이  (1) 2023.12.31
[Softeer] GBC  (0) 2023.12.29
[Softeer] 장애물 인식 프로그램  (1) 2023.12.29