본문 바로가기
CNU 학습 동아리/2020 동계 학습 동아리

2020 동계 학습 동아리_2회차_2020-02-04(화)

by 매화of사군자 2020. 2. 4.

목표

> 카카오 코드 페스티벌 2018 예선 B번 문제 풀기

 

https://www.acmicpc.net/problem/15954

 

15954번: 인형들

첫 번째부터 세 번째까지의 인형을 선택하면 표준편차는 2/3의 양의 제곱근이 되고, 이 때 표준편차가 최소가 된다. 두 번째부터 네 번째까지의 인형을 선택하는 경우와, 세 번째부터 다섯 번째까지의 인형을 선택하는 경우에도 값은 같다.

www.acmicpc.net

결과

인형들 채점 결과

해결 방법

> 항상 그렇듯이 카카오 문제는 이해를 하는 것이 가장 어려운 것 같다.

> 입력으로 들어오는 N은 인형들의 수, K는 골라야 하는 인형들의 수,  두 번째 줄에 들어오는 배열은 인형들을 선호하는 사람들의 수이다.

> 쉽게 말해서 N개의 인형들 중에 K개 이상의 연속된 인형을 뽑아서(결국 선호하는 사람들의 수) 표준편차의 최소값을 구하면 된다.

 

코드

더보기

#include
#include
#include

int size[500];

double std(int n, int k)
{
double min = DBL_MAX;
for (int i = 0; i <= n - k; i++) {
for (int j = i + k; j <= n; j++) {
double sum = 0;
double m = 0;
double std = 0;

for (int k = i; k < j; k++) {
sum += size[k];
}

m = sum / (j - i);

for (int k = i; k < j; k++) {
std += (size[k] - m) * (size[k] - m);
}
std = std / (j - i); //분산
std = sqrt(std); //표준편차
if (min > std)
min = std;
}
}
return min;
}
int main()
{

int n, k;
scanf("%d %d", &n, &k);

for (int i = 0; i < n; i++) {
scanf("%d", &size[i]);
}

printf("%.11lf", std(n,k));

return 0;
}

댓글