-
바이러스 (python)코딩테스트/softeer 2023. 9. 2. 16:17
처음에 최종 `total_virus'를 나눈 나머지를 출력하게 제출했지만..
시간 초과로 실패 처리가 발생했다. 모듈러 산술 이라는 개념이 적용되는데 간단하게 말하자면
K를 P의 N만큼 제곱해서 곱하다 보면 그 수가 많을 경우 숫자가 너무 커져 fail 할수있다는 내용.. 결국 그렇게 구한 값과 매번 비율대로 곱해줄 때마다 1000000007를 나눈 나머지로 `total_virus`값을 갱신하는 값과 같다는 것이다.
다시 말해 큰 수로 인한 오버플로우나 정밀도 문제를 방지할 수 있게 가능한 개념이라는 것.
기존코드
# 입력값 받기 K, P, N = map(int, input().split()) # 초기 바이러스 개수 total_virus = K # N초 동안 바이러스 개수 계산 for i in range(N): total_virus = total_virus * P # 최종 바이러스 개수 출력 print(total_virus % 1000000007)
답안
# 입력값 받기 K, P, N = map(int, input().split()) # 초기 바이러스 개수 total_virus = K # N초 동안 바이러스 개수 계산 for i in range(N): total_virus = (total_virus * P) % 1000000007 # 최종 바이러스 개수 출력 print(total_virus)
https://softeer.ai/practice/info.do?idx=1&eid=407&sw_prbl_sbms_sn=255528
Softeer
연습문제를 담을 Set을 선택해주세요. 취소 확인
softeer.ai
'코딩테스트 > softeer' 카테고리의 다른 글
근무시간 (java) (0) 2023.09.03 A+B (python) (0) 2023.09.02 근무시간 (python) (0) 2023.09.02 주행거리 비교하기 (python) (0) 2023.09.02 GBC (python) (0) 2023.09.02