-
1952.수영장알고리즘/SW Expert Academy 2020. 7. 23. 01:36
이번 문제는 SW Expert 1952 수영장이다. 난이도는 낮은편이다.
하지만 왜인지 아직도 재귀.. 너무 헷갈린다.. 허허.. 집중력이 떨어진거 같다.
다시 열심히 해야겠다..분명 쉬운문제인데.. 흠..
< Code 설명 >
1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253
#pragma warning(disable:4996)#include <iostream>#include <algorithm>using namespace std;int T;int cost[4];int month[12];int ans;void search(int idx, int cnt){ // index와 합계를 인자로 진행if (idx >= 12){ // idx가 12가 되거나 12보다 크면ans = min(cnt, ans); // 최소값을 비교해서 저장하고return; // 리턴}// 없어도 되지만 효율 상승을 위함if (month[idx] == 0){ // 해당 달에 일 수가 없으면search(idx + 1, cnt); // idx만 증가시킴return;}search(idx + 1, cnt + (cost[0] * month[idx])); // index 증가, 1일의 하루치 값으로 계산search(idx + 1, cnt + cost[1]); // index 증가, 일 수와 상관없이 한 달치로 계산search(idx + 3, cnt + cost[2]); // index + 3 증가, 3달을 기준으로 진행되기 때문, 3달치로 계산}void init(){memset(cost, 0, sizeof(cost));memset(month, 0, sizeof(month));}int main() {freopen("1952.txt", "r", stdin);cin >> T;for (int z = 1; z <= T; z++){for (int i = 0; i < 4; i++) // 비용입력cin >> cost[i];for (int i = 0; i < 12; i++)// 12달의 일 수 입력cin >> month[i];ans = cost[3]; // 가장 한계의 최소값은 당연히 1년치 이용권이기 때문에 1년 이용권의 비용으로 초기화search(0, 0); // 탐색시작cout << "#" << z << " " << ans << "\n";}return 0;}cs 참고 블로그 : https://goodgid.github.io/SWEA-1952/
반응형'알고리즘 > SW Expert Academy' 카테고리의 다른 글
2112.보호필름 (0) 2020.07.30 1953.탈주범 검거 (1) 2020.07.28 2382.미생물격리 (0) 2020.07.21 2383.점심 식사시간 (0) 2020.07.10 2477.차량 정비소 (2) 2020.07.07 댓글