코드 :
#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번 사용하여야 된다.
이 부분만 생각했다면 크게 어렵지 않은 문제였음.
'algorithm > SW Expert Academy' 카테고리의 다른 글
[1차원 배열 연습 문제] 최빈수 구하기 - 1204 (0) | 2020.01.08 |
---|---|
[모의 SW 역량테스트] 디저트 카페 - 2105 (0) | 2020.01.07 |
[모의 SW 역량테스트] 점심 식사시간- 2383 (0) | 2019.12.28 |
[모의 SW 역량테스트] 등산로 조성 - 1949 (0) | 2019.12.23 |
[모의 SW 역량테스트] 벌꿀채취 - 2115 (0) | 2019.12.19 |
댓글