본문 바로가기

Algorithm/Brute Force

(C++) - 백준(BOJ) 19947 : 투자의 귀재 배주형

반응형

https://www.acmicpc.net/problem/19947

 

19947번: 투자의 귀재 배주형

2020년에 학교로 복학한 주형이는 월세를 마련하기 위해서 군 적금을 깨고 복리 투자를 하려고 한다. 주형이가 하려는 투자에는 3가지 방법의 투자 방식이 있다.  1년마다 5%의 이율을 얻는 투자 (

www.acmicpc.net

재귀를 이용한 brute force문제였습니다.

📕 풀이방법

📔 입력 및 초기화

투자 기간 y, 초기돈 h를 선언한 후 입력받습니다.

📔 풀이과정

각 3가지의 경우에 대해 이자를 받은 후의 연도와 보유자산을 다름 함수의 인자로 넘겨 재귀형태로 호출합니다.

📔 정답출력

bruteForce()의 반환값을 출력합니다.


📕 Code

backtracking처럼 구현한 방식

#include <bits/stdc++.h>
using namespace std;
int y;
double h;

int bruteForce(double h, int y){
  if(y < 0) return 0;
  if(y == 0) return h;
  int ret = 0;
  ret = max(ret, bruteForce((int)h * 1.05, y - 1));
  ret = max(ret, bruteForce((int)h * 1.2, y - 3));
  ret = max(ret, bruteForce((int)h * 1.35, y - 5));

  return ret;
}

int main(){
  cin >> h >> y;
  cout << bruteForce(h, y);
}

 

0년부터 차례대로 가는 방식(보기 편함)

#include <bits/stdc++.h>
using namespace std;
int y;
double h;

int bruteForce(double money, int year){
  if(year > y) return 0;
  if(year == y) return money;
  int ret = 0;
  ret = max(ret, bruteForce((int)money * 1.05, year + 1));
  ret = max(ret, bruteForce((int)money * 1.2, year + 3));
  ret = max(ret, bruteForce((int)money * 1.35, year + 5));

  return ret;
}

int main(){
  cin >> h >> y;
  cout << bruteForce(h, 0);
}