다음 표와 같이 분말이 있을 때, 40 kg 무게까지 허용가능한 배낭에 최대 이익을 얻을 수 있도록 분말을 넣는 알고리즘의 C 프로그램이 아래와 같다. (가), (나)에 들어갈 코드와 출력값을 바르게 연결한 것은? (단, 배낭에 각 분말 일부만 넣을 수도 있다)
분말 종류 | 보유량(kg) | 이익 |
A | 10 | 60 |
B | 18 | 90 |
C | 25 | 100 |
D | 15 | 120 |
#include <stdio.h>
int main() {
double wgt[] = {10, 18, 25, 15};
double val[] = {60, 90, 100, 120};
double ratio[4] = {}, W = 40, max_r,
totalVal = 0.0;
int i, max_i;
for (i = 0; i < 4; i++)
ratio[i] = (가);
while (W > 0) {
max_r = -1.0;
max_i = -1;
for (i = 0; i < 4; i++) {
if (wgt[i] > 0 && ratio[i] > max_r) {
max_r = ratio[i];
max_i = i;
}
}
if (max_i == -1) break;
if (W >= wgt[max_i]) {
W -= wgt[max_i];
totalVal += val[max_i];
}
else {
totalVal += val[max_i] * (나);
break;
}
wgt[max_i] = 0;
}
printf("%.1f\n", totalVal);
return 0;
} (가) (나) 출력값
- ①val[i] / wgt[i] W / wgt[max_i] 255.0
- ②val[i] / wgt[i] wgt[max_i] / W 255.0
- ③val[i] / wgt[i] W / wgt[max_i] 220.0
- ④wgt[i] / val[i] W / wgt[max_i] 220.0
정답 ①
출처: 인사혁신처 공개 기출(공공데이터포털, 이용허락 제한 없음)