반응형
[모의 SW 역량테스트] 수영장
1. 이해하기
- 수영장에서 판매하고 있는 이용권은 4 종류이다.
- 1일 이용권, 1달 이용권, 3달 이용권, 1년 이용권
- 이용권의 요금과 각 달의 이용 계획이 주어질 때, 이용 가능한 가장 적은 비용을 찾는 문제.
- 완전탐색 문제.
2. 구현하기
-
해당 달이 되었을 때, 각 이용권을 이용할 때의 비용을 각각 구해본다. 그리고 이 때의 최소값을 구한다.
int solve(int index, int sum) { if(index >= 12) return sum; int ret = MAX; ret = min(ret,solve(index+1,sum+fee[0]*plan[index])); ret = min(ret,solve(index+1,sum+fee[1])); ret = min(ret,solve(index+3,sum+fee[2])); ret = min(ret,solve(index+12,sum+fee[3])); return ret; }
3. 전체 코드
#include <iostream>
using namespace std;
const int MAX = 987654321;
int plan[12];
int fee[4];
int solve(int index, int sum) {
if(index >= 12) return sum;
int ret = MAX;
ret = min(ret,solve(index+1,sum+fee[0]*plan[index]));
ret = min(ret,solve(index+1,sum+fee[1]));
ret = min(ret,solve(index+3,sum+fee[2]));
ret = min(ret,solve(index+12,sum+fee[3]));
return ret;
}
void input() {
for(int i = 0; i < 4; i++) cin >> fee[i];
for(int i = 0; i < 12; i++) cin >> plan[i];
}
int main() {
int T;
cin >> T;
for(int t = 1; t <= T; t++) {
input();
cout << "#" << t << ' ' << solve(0,0) << '\n';
}
return 0;
}
'알고리즘 > SW Expert Academy' 카테고리의 다른 글
[모의 SW 역량테스트] 2477. 차량 정비소 (0) | 2019.10.16 |
---|---|
[모의 SW 역량테스트] 2383. 점심 식사시간 (0) | 2019.10.16 |
[모의 SW 역량테스트] 2382. 미생물 격리 (0) | 2019.10.15 |
[모의 SW 역량테스트] 1953. 탈주범 검거 (0) | 2019.10.15 |
[모의 SW 역량테스트] 1949. 등산로 조성 (0) | 2019.10.15 |