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