치춘짱베리굿나이스

[백준] 19947 본문

C C++/알고리즘풀이

[백준] 19947

치춘 2023. 9. 26. 19:39

투자의 귀재 배주형

문제

2020년에 학교로 복학한 주형이는 월세를 마련하기 위해서 군 적금을 깨고 복리 투자를 하려고 한다.

주형이가 하려는 투자에는 3가지 방법의 투자 방식이 있다.

  • 1년마다 5%의 이율을 얻는 투자 (A)
  • 3년마다 20%의 이율을 얻는 투자 (B)
  • 5년마다 35%의 이율을 얻는 투자 (C)

투자를 할 때에는 다음과 같은 주의점이 있다.

  • 투자의 기한(1년, 3년, 5년)을 채우는 시점에 이율이 반영되며, 그 사이에는 돈이 늘어나지 않는다.
  • 투자 방식은 매년 바꿀 수 있다.
  • 매번 이율은 소수점 이하를 버림 해서 받는다.

예를 들어서, 지금 가진 돈이 11111원이면, A 방식이면 1년 후에 555원, B 방식이면 3년 후에 2,222원, C 방식이면 5년 후에 3,888원을 이자로 받을 수 있다. 만약 C 방식으로 투자했지만 4년이 지난 시점이라면 받을 수 있는 이자는 0원이다.

주형이의 초기 비용이 H원일 때, Y년이 지난 시점에 가장 많은 금액을 얻을 수 있는 투자 패턴을 분석하고 그 금액을 출력하자.

입력

첫째 줄에 초기 비용 H와 투자 기간 Y가 주어진다.

모든 입력은 정수로 주어진다.

출력

가장 많은 이득을 얻었을 때의 총 자산을 소수점을 모두 버리고 정수로 출력한다.

풀이

#include <iostream>
#include <algorithm>
#include <cmath>

int dp[11];

int main(void) {
    int seed, year, max;

    std::cin >> seed >> year;

    dp[0] = seed;
    for (int i = 1; i <= year; i++) {
        max = -1;
        if (i - 1 >= 0) {
            max = std::max((int)floor(1.05 * dp[i - 1]), max);
        }
        if (i - 3 >= 0) {
            max = std::max((int)floor(1.2 * dp[i - 3]), max);
        }
        if (i - 5 >= 0) {
            max = std::max((int)floor(1.35 * dp[i - 5]), max);
        }
        dp[i] = max;
    }

    std::cout << dp[year];
}

'C C++ > 알고리즘풀이' 카테고리의 다른 글

[백준] 2563  (0) 2024.02.10
[백준] 1916  (0) 2023.09.24
[백준] 5525  (0) 2023.09.22
[백준] 12871  (0) 2023.09.21
[백준] 5648  (0) 2023.09.20
Comments