Computer >> 컴퓨터 >  >> 프로그래밍 >> Python

파이썬으로 투자 원금이 목표 금액에 도달하는 데 걸리는 연수 구하기

매개변수 P(원금), O, E, T가 주어졌다고 가정해 보겠습니다. P달러의 원금을 주식 시장에 투자하려고 하는데, 이 주식 시장은 매년 수익률이 번갈아 나타납니다. 즉, 첫 해에는 E%의 수익률을, 다음 해에는 O%의 수익률을 기록하는 식입니다. 우리가 구해야 할 값은 원금이 최소 T달러에 도달하는 데 몇 년이 걸리는지입니다.

문제 이해하기

예를 들어 입력이 P = 200, O = 10, E = 25, T = 300이라면 결과는 3이 됩니다. 과정을 하나씩 살펴보면 다음과 같습니다.

  • 1년 차: 25%의 수익 발생 → 200 + 50 = 250달러
  • 2년 차: 10%의 수익 발생 → 250 + 25 = 275달러
  • 3년 차: 10%의 수익 발생 → 275 + 27.5 = 302.5달러

302.5달러는 목표액인 300달러를 초과하므로, 총 3년이 필요합니다.

해결 알고리즘

이 문제는 다음 단계를 통해 해결할 수 있습니다.

  • 결과값 ans를 0으로 초기화합니다.
  • P가 T 미만인 동안 아래 과정을 반복합니다.
    • P에 (1 + E/100)를 곱하고 ans를 1 증가시킵니다.
    • 그래도 P가 여전히 T 미만이라면, P에 (1 + O/100)를 곱하고 ans를 한 번 더 증가시킵니다.
  • 반복이 끝나면 ans를 반환합니다.

파이썬 구현 코드

class Solution:
    def solve(self, P, O, E, T):
        ans = 0
        while P < T:
            P *= 1+(E/100)
            ans += 1
            if P < T:
                P *= 1+(O/100)
                ans += 1
        return ans

ob = Solution()
P = 200
O = 10
E = 25
T = 300
print(ob.solve(P, O, E, T))

입력

P = 200, O = 10, E = 25, T = 300

출력

3

코드 설명

while 루프 안에서는 먼저 E%의 수익률을 적용한 뒤, 그 시점에도 목표 금액에 도달하지 못했다면 O%의 수익률을 추가로 적용하는 방식으로 동작합니다. 수익률을 한 번 적용할 때마다 연수를 세는 변수 ans가 1씩 증가하며, 원금이 목표액 이상이 되는 순간 반복문이 종료되고 총 소요 연수가 반환됩니다. 이처럼 간단한 시뮬레이션 반복문만으로 복리 수익이 누적되는 상황에서 목표 달성 시점을 손쉽게 계산할 수 있습니다.