본문 바로가기
개발아닌개발/알고리즘문제풀이

[백준 알고리즘] 15954번 문제 인형들

by 불청객 2021. 11. 8.
반응형
  • 숫자 제한 : #include <limits.h>
  • 간단한 수학계산(최소, 최대 .. ) : #include <math.h>
  • 제곱근 : #include <algorithm>
  • 원하는 warning disable : #pragma warning(disable: 4996)
    └ scanf warning code 4996

 

 

15954번: 인형들

 

 

문제 풀이

double num15954_kakao()
{
	int N=0, K=0;//인형이 n개 있을때 K개 이상의 연속된 위치의 인형

	scanf("%d %d",&N,&K);
	
	int *NP = new int[N];

	//선호하는 사람 수 입력
	for(int q =0; q<N; q++)
	{
		scanf("%d",&NP[q]);
	}

	double m = 0.0;		//평균
	double d = 0.0;		//분산
	double result = INT_MAX;		//최소가 되는 표준편차 아무높은 숫자 넣음
	int i = 0, j = 0;

	//K번이상씩 반복 필요.
	while(K<=N){
		//시작 인덱스 i
		for(i = 0; i <= N-K; i++)   
		{
			//시작인덱스(i)에서 (K번+시작인덱스)까지
			for(j = i; j <K+i; j++)
			{
				m += NP[j];
			}
			m = m/K;
			//end 평균
			for(j = i; j < K+i; j++)
			{
				d += (NP[j]-m) * (NP[j]-m);
			}
			d = d/K;
			//end 분산

			d = sqrt(d);	//제곱근
			result = (result > d )? d : result;
			m = d = 0.0;
		}
		K++;
	}
	NP = NULL;
	delete NP;
	return result;
}

 

 

 

동적할당은 해제해줘도 접근이 가능함. 고로 또 사용될 수 있으니 꼭 NULL처리를 해줘서 외부에서 사용되지 못하도록 할것. 습관

728x90
반응형

댓글