[SWEA] 1952. 수영장

최대 1 분 소요

문제 링크

[SWEA] 1952. 수영장


풀이 과정

재귀 함수를 통해 첫 달을 기준으로 네 개의 이용권(1일, 1달, 3달, 1년)을 각각 적용해 1년간의 총 비용을 구하고, 그 값이 최소가 되면 갱신시킵니다.


코드

import java.util.Scanner;

public class Solution {
    static int ans;

    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        int TC = sc.nextInt();
        for (int tc = 1; tc <= TC; tc++) {
            ans = Integer.MAX_VALUE;
            int[] fee = new int[4];
            for (int i = 0; i < 4; i++)
                fee[i] = sc.nextInt();

            int[] months = new int[12];
            for (int i = 0; i < 12; i++)
                months[i] = sc.nextInt();

            calc(fee, months, 0, 0);

            System.out.println("#" + tc + " " + ans);
        }
    }

    private static void calc(int[] fee, int[] months, int idx, int sum) {
        if (idx > 11) {
            ans = Math.min(ans, sum);
            return;
        }

        calc(fee, months, idx + 1, sum + months[idx] * fee[0]);
        calc(fee, months, idx + 1, sum + fee[1]);
        calc(fee, months, idx + 3, sum + fee[2]);
        calc(fee, months, idx + 12, fee[3]);
    }
}

카테고리:

업데이트:

댓글남기기