문제
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
95229 3 |
예제 출력 1
114274 |
예제 입력 2
25542 10 |
예제 출력 2
46549 |
더보기
Solution
#include<stdio.h>
int main(void)
{
int H, Y;
scanf("%d %d", &H, &Y);
switch(Y)
{
case 1:
case 2:
case 3:
case 6:
case 9:
for(int A=0;A<Y%3;A++)
H*=1.05;
for(int B=3;B<=Y;B+=3)
H*=1.2;
break;
case 5:
case 10:
for(int C=5;C<=Y;C+=5)
H*=1.35;
for(int B=0;B<Y%5;B+=3)
H*=1.2;
break;
case 4:
{
int compare[2];
compare[0]=compare[1]=H;
for(int i=0;i<2;i++)
for(int j=0;j<2;j++)
compare[j]*=i==j?1.05:1.2;
H=compare[0]>compare[1]?compare[0]:compare[1];
break;
}
case 7:
{
int compare[3];
compare[0]=compare[1]=compare[2]=H;
for(int i=0;i<3;i++)
for(int j=0;j<3;j++)
compare[j]*=i==j?1.05:1.2;
for(int i=0;i<3;i++)
H=compare[i]>H?compare[i]:H;
break;
}
case 8:
{
int compare[2];
compare[0]=compare[1]=H;
for(int i=0;i<2;i++)
for(int j=0;j<2;j++)
compare[j]*=i==j?1.35:1.2;
H=compare[0]<compare[1]?compare[1]:compare[0];
break;
}
default:
break;
}
printf("%d\n", H);
return 0;
}
728x90
'백준 알고리즘' 카테고리의 다른 글
<백준 알고리즘> 19944번: 뉴비의 기준은 뭘까? (0) | 2020.09.30 |
---|---|
<백준 알고리즘> 2292번: 벌집 (0) | 2020.09.30 |
<백준 알고리즘> 19945번: 새로운 언어 CC (0) | 2020.09.28 |
<백준 알고리즘> 9653번: 스타워즈 로고 (0) | 2020.09.28 |
<백준 알고리즘> 1735번: 분수 합 (0) | 2020.09.28 |