백준 19947 투자의 귀재 배주형 문제풀이 (JAVA)

0

문제 링크

문제


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가 주어진다.

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

출력


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

제한


10,000 ≤ H ≤ 100,000, H는 정수
0 ≤ Y ≤ 10, Y는 정수

풀이


각 경우에서 가장 최선인 경우를 계산했다.
기본적인 경우는 1년짜리 상품을 구매하여 작년의 최선의 경우에서 1.05배 한 값을 (A)
3년 이상 경우는, A 상품과 3년 전에 최선의 경우에서 1.2배이율을 곱한 값 중 최대의 값을,
5년 이상인 경우는, 지금까지 최대값에서 5년 전 최선의 경우에서 1.35배를 곱한 수 중 최대의 값을 구해서
각 경우마다 최선의 선택을 하게 한다.
그렇게 해서 마지막 만기기한에 최대값을 출력하면 된다

소스코드


import java.util.*;
import java.io.*;


public class Main {

    public static void main(String[] args) throws Exception {
        BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
        BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(System.out));
        StringBuilder sb = new StringBuilder();
        StringTokenizer st = new StringTokenizer(br.readLine());
        final int START_MONEY = Integer.parseInt(st.nextToken());
        final int YEARS_LIMIT = Integer.parseInt(st.nextToken());
        int money[] = new int[YEARS_LIMIT + 1];
        money[0] = START_MONEY;
        for (int i = 1; i <= YEARS_LIMIT; i++) {
            money[i] = (int) (money[i - 1] * 1.05);
            if (i >= 3) {
                money[i] = Math.max(money[i], (int) (money[i - 3] * 1.2));
            }
            if (i >= 5) {
                money[i] = Math.max(money[i], (int) (money[i - 5] * 1.35));
            }
        }
        sb.append(money[YEARS_LIMIT]);
        sb.append("\n");
        bw.write(sb.toString());

        bw.flush();
        br.close();
        bw.close();

    }


}

0개의 댓글

관련 채용 정보