FASTIVAL 문제 관련 질문

  • soulmaker
    soulmaker

    안녕하세요
    FASTIVAL 문제를 푸는데
    저희 집에서는 결과가 잘 나오는거 같은데요
    (이클립스에서 실행했을때 contain obsolete methods......라는 메시지가 나올때도 있어요 결과는 잘 나오는거 같아요)
    답안을 제출하니까 계속 런타임 오류라고 하네요
    어디가 잘못 되어 있는거 같기는 한데 어디가 잘못되었는지를
    모르겠네요
    저가 하도 답답해서 예제 입력을 만들어 주는 소스도 만들어서
    여러가지 예제도 넣어봤는데요
    그래도 결과는 나오는데 뭐가 잘못 되었을까요?
    정말 오답도 아니고 런타임 오류가 계속 생기니까 답답하네요
    고수님들 지적좀 부탁드립니다 ㅠㅠ

    package FESTIVAL;
    import java.util.Scanner;
    /*
     * 테스트 케이스를 입력 받은후
     * 
     * N 과 L을 입력 받고
     * 만약 N과 L이 같으면 배열 전채를 평균을 구함
     * 아니면 {
     *       L개의 평균중 가장 작은거
     *       L+1개의 평균중 가장 작은거
     *       L+2개의 평균중 가장 작은거
     *       L+3개의 평균중 가장 작은거
     *       ......
     *       N개의 평균중 가장 작은거
     *       }
     *       를 구해서 그중에서 가장 작은 값을 출력 하는 알고리즘 입니다.
     *       
     * */
    class Festival {
    
        static Scanner s=new Scanner(System.in);
    
        public static void main(String[] args){
    
    
    
            int testCase=s.nextInt();//테스트 케이스
    
    
            while(testCase-- >0){
    
                int N=s.nextInt();
                int L=s.nextInt();
    
                if(N==L){//N 과 L 이 같을 경우 비용을 입력 받고 평균값 출력
                    int []arr=new int[N];
                    int sum=0;
                    for(int i=0; i<arr.length;i++){
                        arr[i]=s.nextInt();
                        sum+=arr[i];
                    }
    
                    System.out.println((double)sum/N);
    
                    continue;
                }//if
    
                int[] arr= new int[N];
    
    
                    double aver[]= new double[N-L];
    
    
    
                for(int i=0; i<arr.length;i++){
    
                    arr[i]=s.nextInt();
    
                }//for construct arr
    
    
                for(int i=0; i<N-L; i++){
    
                    aver[i]=cost(arr,L+i);//L L+1 L+2 ... N 개의 평균중 가장 작은값을 각각 배열에 저장
    
    
                }// solution
    
                System.out.println(min(aver));//그중 가장 작은값 출력
    
    
            }//while
    
    
    
    
        }//main 
    
    
        static double cost(int[] arr, int count){
    
    
            int sum=0;
    
            int copy[]= new int[count];
            double tempArr[]=new double[arr.length-count+1];
    
            for(int i=0; i<tempArr.length;i++){
                sum=0;
    
                for(int j=0; j<copy.length;j++){
    
                    copy[j]=arr[j+i];
    
                }//for j       arr copy
    
                for(int j=0; j<copy.length;j++){
                    sum+=copy[j];
                }//for j     average
    
                tempArr[i]=(double)sum/count;
    
            }//for i        
    
    
            return min(tempArr);
        }// count 만큼의 기간동안 공연장을 빌릴때 드는 비용의 평균값의 최소값
    
    
    
        static double min(double[] arr){
    
            double minimum=arr[0];
            for(int i=0; i<arr.length;i++){
    
                if(minimum>arr[i])
                    minimum=arr[i];
    
            }//for i
    
    
            return minimum;
    
        }//가장 작은값을 반환하는 메서드
    
    }//class
    
    
    /*
     * 이 알고리즘으로 예제 입력을 만들었습니다.
     * 
     * public static void main(String[] args) {
    
    
            //int arr[]= {1,2,3,1,2,3};
    
            //cost(arr,5);
            int testCase=100;
    
            System.out.println(testCase);
    
            while(testCase-- >0){
                int N=(int)(Math.random()*100)+1;
                int L=(int)(Math.random()*N)+1;
                System.out.print(N+" "+L);
                System.out.println();
                for(int i=0; i<N;i++){
    
                    int C=(int)(Math.random()*100)+1;
                    System.out.print(C+" ");
                }//for
                System.out.println();
    
            }//while
    
    
        }//main
     * 
     * */
    

    10년 전
2개의 댓글이 있습니다.
  • JongMan
    JongMan

    자바 클래스 이름이 항상 Main이어야 합니다. 알고스팟 온라인 저지/첫 번째 문제 풀기를 확인해 보세요.


    10년 전 link
  • soulmaker
    soulmaker


    몰랐네요
    감사합니다.


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