πSWEA_SW_1952
π [SW_1952] μμμ₯
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.StringTokenizer;
public class SWEA_SW_1952 {
static BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
static StringBuilder sb = new StringBuilder();
static StringTokenizer st;
static int[] price;
static int[] month;
static int min;
public static void main(String[] args) throws IOException {
int tc = Integer.parseInt(br.readLine());
for(int t=1;t<=tc;t++){
sb.append("#").append(t).append(" ");
price = new int[4];
month = new int[12];
// κ°κ²© μ
λ ₯
st = new StringTokenizer(br.readLine()," ");
for(int i=0; i<4; i++){
price[i] = Integer.parseInt(st.nextToken());
}
// μμμ₯ μ΄μ© κ³ν
st = new StringTokenizer(br.readLine()," ");
for(int i=0; i<12; i++){
month[i] = Integer.parseInt(st.nextToken());
}
min = price[3];
dfs(0,0);
sb.append(min).append("\n");
}
System.out.println(sb);
}
static void dfs(int cnt, int sum){
if(cnt>=12){
min = Math.min(min,sum);
return;
}
// μ΄μ©κ³νμ΄ μλ€λ©΄
if(month[cnt] == 0){
dfs(cnt+1, sum);
}
else {
// μΌ
dfs(cnt + 1, sum + (month[cnt] * price[0]));
// 1κ°μ
dfs(cnt + 1, sum + price[1]);
// 3κ°μ
dfs(cnt + 3, sum + price[2]);
}
}
}
π€ λμ μκ°
μ€ν°λμμ νμλλ° μ²μμ λ무 볡μ‘νκ² μκ°νλ€..
μ΅λν ν루 κ°κ²©κ³Ό νλ¬ κ°κ²©μ λΉκ΅ν΄μ μΌμλ°λΌ μ²λ¦¬λ₯Ό ν΄μ£Όλ..
ꡬμνλ©΄μλ λ무 κ²½μ°μ μκ° λ§μμ μ’ μ€μ¬μ ν΄λ΄€μ§λ§ κ²°κ³Όλ μ€ν¨μλ€.. λμ€μλ 3λ¬μ κ°κ²©μ΄ 1λ¬μ κ°κ²©λ³΄λ€ λ μ μ κ²½μ°λ§ λΉΌκ³ ( TC 2λ² ) λ€ λ§μΆ°μ μμ½λ€κ³ μκ°νλλ° μ€ν°λμμ νμ΄λ₯Ό 보λ νννλ€..γ
γ
γ
dfsλ₯Ό μ΄μ©ν΄ μνμΌλ‘ νΈλ κ²μ΄μλ€.. μ΄λ κ² κ°λ¨ν κ²μ μκ°ν΄λ΄μ§ λͺ»νλ€λ.. μμ§ dfsμ μΉνμ§ μλ€λ κ²μ μ¦λͺ
νλ€..γ
γ
κ°λ¨νλ€ 1μλΆν° 12μκΉμ§ μμμ₯κ°λ μΌμλ₯Ό λ°κ³ μ΄μ μ²μλΆν° μμν΄μ 12μμ΄ λμ΄κ°λ©΄ κ³μ°μ ν΄μ£Όλ κ²μ΄λ€. κ·Έκ²μ μΌ λ¨μ μ λ¨μ 3κ°μ λ¨μλ‘ κ³μ°νκ³ , κΈ°λ³Έκ°μ 1λ
κ°κ²©μΌλ‘ ν΄μ λΉκ΅λ₯Ό ν΄μ£Όλ©΄ λλ€.
μ¬κ·μ μ±μ§μ μ μ΄μ©ν΄μ νμ΄ν λ¬Έμ μ΄λ€. λ€μμ μ΄λ° μμ λ¬Έμ κ° λμ€λ©΄ dfsλ‘ μμκ°ν΄λ΄μΌκ² λ° !!