728x90
반응형

문제 : http://www.jungol.co.kr/bbs/board.php?bo_table=pbank&wr_id=283&sca=99

 

JUNGOL

 

www.jungol.co.kr

 

문제

도시락 집 회계 담당을 하는 철기는 손님들이 드시는 음식의 가격들을 집계하여 매일 이들의 합산 가격과 평균 도시락 가격과 표준 편차를 구해야 하는 임무를 가지고 있다. 매일 업무 종료 때마다 이를 구해야하는 철기군 처음에는 직접 계산하다가 매일 바뀌는 도시락 수와 가격에 복잡함을 느껴 이를 프로그램으로 만들려고 한다.

 

평균 및 표준편차는 반올림해서 소수점 첫째 자리까지 구한다. 표준 편차의 공식은 도시락 각각의 가격을 Xi라고 하고 평균을 M이라고 한다면 다음과 같다.

 


 

표준편차란 자료의 분산 정도를 나타내는 수치로 분산의 양의 제곱근으로 표준 편차가 작은 것은 평균값 주위의 분산의 정도가 작은 것을 나타낸다.

 

입력형식

첫 번째 줄에는 도시락의 수 n(1부터 100사이의 정수)이 입력되고 다음 줄부터 n개의 줄에는 각 도시락의 가격(1,000부터 4,000사이의 정수)들을 입력받는다. 하나의 결과가 출력되면 프로그램을 종료한다.데이터의 크기가 주어진 범위를 벗어나는 데이터는 입력되지 않는다.

 

출력형식

위에서 입력한 자료에 맞추어서 도시락 가격의 총 합과 평균 가격 표준편차를 출력한다. 평균과 표준편차는 소수점이하 둘째 자리에서 반올림하여 첫째자리까지 출력한다. 단 소수점이하 둘째 자리에서 반올림한 값에서 소수점이하 첫째자리가 0일 경우는 출력하지 않는다.

 

입력 예

3 
1500
2000 
2500

 

출력 예

6000 
2000
408.2

 

 

코드 :

# include <stdio.h>
# include <stdlib.h>
# include <math.h>

int main()
{
	int n,i;
	scanf("%d",&n);
	int sum=0;
	double avg = 0;
	double num = 0;
	int *arr = (int*)malloc(sizeof(int) * n);
	
	for(i = 0; i<n; i++)
	{
		scanf("%d",&arr[i]);
		sum += arr[i];
	}
	avg = (double)sum/(double)n;
	avg += 0.05;
	for(i = 0; i<n; i++)
	{
		num = num+pow(arr[i]-avg,2);
	}
	num /=(double)n;
	num = sqrt(num);
	num += 0.05;
	printf("%d\n",sum);
	
	if((int)(avg * 10)%10 == 0)
	{
		printf("%.lf\n",avg);
	}
	else
	{
		printf("%.1lf\n",avg-0.05);
	}
	
	if((int)(num*10)%10 == 0)
	{
		printf("%.lf\n",num);
	}
	else
	{
		printf("%.1lf\n",num-0.05);
	}
	
	
	return 0;
}
728x90
반응형
  • 네이버 블러그 공유하기
  • 네이버 밴드에 공유하기
  • 페이스북 공유하기
  • 카카오스토리 공유하기