[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]);
}
}
댓글남기기