algorithm/SW Expert Academy
수영장 - 1952
에어컨조아
2019. 12. 8. 17:15
SW Expert Academy
SW 프로그래밍 역량 강화에 도움이 되는 다양한 학습 컨텐츠를 확인하세요!
swexpertacademy.com
코드 :
#include <iostream>
#include <limits>
using namespace std;
int price[4] = { 0 };
int use[12] = { 0 };
int minPrice = INT32_MAX;
//수행되는 month
void solution(int month, int sum)
{
//탈출조건
if (month >= 12)
{
if (minPrice > sum)
{
minPrice = sum;
}
return;
}
if (use[month] == 0)
{
solution(month + 1, sum);
return;
}
//분할조건
solution(month + 1, sum + (use[month] * price[0]));
solution(month + 1, sum + price[1]);
solution(month + 3, sum + price[2]);
}
int main()
{
int c;
cin >> c;
for (int i = 1; i <= c; i++)
{
//초기화
minPrice = INT32_MAX;
for (int j = 0; j < 4; j++)
{
cin >> price[j];
}
for (int k = 0; k < 12; k++)
{
cin >> use[k];
}
solution(0, 0);
if (minPrice > price[3])
{
minPrice = price[3];
}
cout << "#" << i << " " << minPrice << "\n";
}
return 0;
}
1달에 5회 이용이면 1일 이용권을 5번 사용하여야 된다.
이 부분만 생각했다면 크게 어렵지 않은 문제였음.