ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • 1952.수영장
    알고리즘/SW Expert Academy 2020. 7. 23. 01:36

    이번 문제는 SW Expert 1952 수영장이다. 난이도는 낮은편이다.

    하지만 왜인지 아직도 재귀.. 너무 헷갈린다.. 허허.. 집중력이 떨어진거 같다.

    다시 열심히 해야겠다..분명 쉬운문제인데.. 흠.. 

     

    SW Expert Academy

    SW 프로그래밍 역량 강화에 도움이 되는 다양한 학습 컨텐츠를 확인하세요!

    swexpertacademy.com

     

     


     

     

    < Code 설명 >

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53

    #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, 0sizeof(cost));
        memset(month, 0sizeof(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(00); // 탐색시작
     
            cout << "#" << z << " " << ans << "\n";
         }
        return 0;
    }
    cs

    참고 블로그 : https://goodgid.github.io/SWEA-1952/

    '알고리즘 > SW Expert Academy' 카테고리의 다른 글

    2112.보호필름  (0) 2020.07.30
    1953.탈주범 검거  (0) 2020.07.28
    1952.수영장  (0) 2020.07.23
    2382.미생물격리  (0) 2020.07.21
    2383.점심 식사시간  (0) 2020.07.10
    2477.차량 정비소  (2) 2020.07.07

    댓글 0

Designed by Tistory.