Festival 문제 오답 (java)

  • rerica
    rerica

    연습 문제 Festival

    안녕하세요,
    오늘 가입해서 FESTIVAL 문제 풀어보려는데, 제출시 오답이 계속 나오네요.
    원인을 못찾겠느데 혹시 오답 원인 아시는 분 커멘트 부탁드려요 ㅠㅠ

    import java.util.Scanner;

    public class Main {
    static int C; // case C
    static int N; // day
    static int L; // team number
    static int A[] = new int[1000];

    static int minSum=-1;
    static float minAvg=-1;
    
    public static void main(String args[]) throws Exception {
        Scanner sc = new Scanner(System.in);
    
        C = sc.nextInt();
        for (int test_case = 1; test_case <= C; test_case++) {
            N = sc.nextInt();
            L = sc.nextInt();
    
            //System.out.println("N="+N +", L=" + L);
    
            minAvg = -1; //초기화
            for(int i=0; i<N; i++) {
                A[i] = sc.nextInt();
            }
            // algo
            for(int day = L; day <= N; day++) {
                //합 최소
                minSum = -1; //초기화
                for(int i=0; i<= N-day; i++) {
                    int sum=0;
                    for(int j=i; j<day+i; j++)
                        sum += A[j];
    
    
                    if(minSum < 0 || minSum >sum) 
                        minSum = sum;
                }
                float avg = (float)minSum / day;
                //평균
                if(minAvg<0 || minAvg > avg) 
                    minAvg = avg;
            }
            System.out.printf("%.11f", minAvg);
            System.out.println();
        }
    }

    }


    10년 전
4개의 댓글이 있습니다.
  • Being
    Being

    float는 유효숫자의 자릿수가 매우 적어 이 문제와 같이 정밀한 결과를 요구할 때에는 틀리기 쉽습니다.


    10년 전 link
  • Being
    Being

    다음부터는 코드를 읽기 쉽도록 구문 강조를 해 주세요. 글을 작성하실 때 아래 나오는 도움말을 참조하셔서 ~~~ 로 감싸 주시면 됩니다.


    10년 전 link
  • rerica
    rerica

    헉.. double 로 바꿨더니 되네요. float와 double 차이를 잘 모르겠네요..실수는 항상 어렵네요..ㅠㅠ
    Being 님 감사합니다!!!


    10년 전 link
  • Being
    Being

    자주 하는 실수 모음 페이지의 '소수 처리' 절과 그 아래 '더 알아보기' 의 링크들을 읽어 보세요.


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