RTE (nonzero return code) : FESTIVAL using java

  • Janus19
    Janus19

    안녕하세요. 이제 막 알고리즘 공부를 시작한 사람입니다. java로 FESTIVAL 문제를 풀어보았는데 RTE에러가 계속 나와서요...ㅠㅠ 주석을 달아서 각 소스 설명하였습니다.

    package RockFestival;

    import java.util.Scanner;

    public class Main {

    public static void main(String[] args) {
        // TODO Auto-generated method stub
    
        int TC;
        Scanner sc = new Scanner(System.in);
        TC = sc.nextInt();
    
        for(int i=0;i<TC;i++){
            int day, team;
            double min;
            day = sc.nextInt();
            team = sc.nextInt();
    
            double [] total = new double[day-team+1];//각 경우의 수에 따른 날짜별 비용의 합
            double [] avg = new double[day-team+1];//각 경우의 수에 따른 총합의 평균
            int [] cost = new int [day];//각 날짜의 비용
            for(int c=0;c<day;c++){
                cost[c] = sc.nextInt();
            }
    
            /* 날짜만큼 비용을 더해 총합을 구하고, 비용의 총합을 날 수(team+k)만큼 나누어 평균을 구한다.
             * team+k가 중요한대, 예를 들어서  총 날짜가 6일(day)이고, 정해진 팀(team)이 3인경우에는
             * 3일, 4일, 5일, 6일을 빌리는 경우의 평균비용을 구하여 비교해봐야한다. 이 3,4,5,6은
             * 3+0, 3+1, 3+2, 3+3으로 표현될 수 있으며, (총 날짜-정해진 팀의수)+1 : (day-team)+1 만큼 반복해서 구해봐야한다.
             */
            for(int k=0;k<(day-team)+1;k++){
                //각 경우에 해당하는 총 비용의 합과 평균을 계산하는 반복문
                for(int j=0;j<team+k;j++){
                    total[k] += cost[j];
                    avg[k] = total[k]/(team+k);
                }
    
            }
    
            //각 경우의 수의 평균 중 비용이 가장 저렴한 것을 찾는 배열 내 최소값을 찾는 알고리즘
            min = avg[0];
            for(int m=0;m<avg.length;m++){
                if(min > avg[m]){
                    min = avg[m];
                }
            }
    
            System.out.println(min);
        }
    
    }

    }


    7년 전
1개의 댓글이 있습니다.
  • JongMan
    JongMan

    배열 크기가 너무 작네요.


    7년 전 link
  • 정회원 권한이 있어야 커멘트를 다실 수 있습니다. 정회원이 되시려면 온라인 저지에서 5문제 이상을 푸시고, 가입 후 7일 이상이 지나셔야 합니다. 현재 문제를 푸셨습니다.