알고리즘문제해결전략)록 페스티벌 (Festival) 질문입니다! beable #include <stdio.h> #include <string.h> int main() { int C, N, L, cost[1001], day, sum = 0; double ave, min_ave = 101; // C,N,L은 문제와 같은 값에, cost는 각 날의 공연장 대여 비용, day는 평균 비용 계산을 위한 분모값, sum은 분자값, ave는 분수 계산 값과 min_ave는 정답으로 제출할 값입니다. memset(cost, 0, sizeof(cost)); scanf("%d", &C); for (int i = 0; i < C; ++i) { scanf("%d %d", &N, &L); day = L; for (int j = 0; j < N; ++j) scanf("%d", &cost[j]); while (day <= N) { for (int j = 0; j < day; ++j) sum += cost[j]; ave = (double)sum / (double)day; min_ave = (ave < min_ave) ? ave : min_ave; //해당하는 날들의 첫 합은 cost 배열의 값들을 더해 구합니다. for (int j = day; j < N; ++j) { sum += cost[j]; sum -= cost[j - day]; //그 다음부턴 다음 인덱스값을 더하고, 이전 값을 빼는 식으로 구했습니다. ave = (double)sum / (double)day; min_ave = (ave < min_ave) ? ave : min_ave; } sum = 0; ++day; } printf("%.12f\n", min_ave); } } 책을 사서 처음 공부해보고자 하는데, 첫 문제부터 막혔습니다. 어떤 부분이 문제일 것인지 고수 분들의 고견을 여쭤보고자 합니다. 조언 부탁드리겠습니다! 9년 전
3개의 댓글이 있습니다. cosics 고수는 아니지만.. 공연장을 L일 동안 예약할 때 반드시 연속일로 고려해야 하지 않을까요? 문제에 "...이 중 L일 이상을 연속해서 대여하되..." 라는 조건이 있습니다. 물론 이 부분을 고려하지 않으신 것 같지는 않습니다만.. 대여일 L이 반드시 연속적이어야 한다는 조건이 이 문제를 너무나도 간단하게 풀 수 있게 도와주는 셈이지요. 또한 L ≤ N 라는 조건도 있으니 이를 이중 반복문으로 처리하면 더 간단히 풀리지 않을까 하는 의견입니다. 부족하지만 도움이 되셨기를.. 9년 전 link beable 확인해보겠습니다! 감사합니다!! 9년 전 link cosics 아닙니다^ 고수가 아니라 저두 아직 배우는 입장이고 단지 먼저 문제를 풀었다는 것 밖엔^ 아무튼 제가 드리고 싶은 말씀은 이 문제에 대해서는 너무 어렵게 생각마시고.. 아주 간단하게 생각하시면 충분히 푸실 수 있으실 겁니다. 9년 전 link 정회원 권한이 있어야 커멘트를 다실 수 있습니다. 정회원이 되시려면 온라인 저지에서 5문제 이상을 푸시고, 가입 후 7일 이상이 지나셔야 합니다. 현재 문제를 푸셨습니다.
beable
책을 사서 처음 공부해보고자 하는데, 첫 문제부터 막혔습니다.
어떤 부분이 문제일 것인지 고수 분들의 고견을 여쭤보고자 합니다.
조언 부탁드리겠습니다!
9년 전