어읽로꾸거
BOJ 15954 인형들 본문
백준 15954 : https://www.acmicpc.net/problem/15954
해결과정:
문제를 풀때 실수나 놓치는 부분이 많은 문제였음
1. K이상
2. 초기 지정해주는 min값을 매우 크게해주지 않으면 안됨
3. 범위(one by off 문제)
4. double말고 long double
이것만 해결하면 대부분은 맞을 것 같다.
1번 조건을 대충 읽어서 시간을 날리고... 2번도 놓쳐서 또날리고... 3번은 그동안 많이 겪은 문제라서 확실하게 확인함
for문을 돌리는것 말고도
분산 = 제곱의평균 - 평균의제곱
으로 구할 수도 있다. 고등학교때 제평평제라고 외웠음 ∂
코드:
#include<iostream>
#include<math.h>
using namespace std;
int main() {
//freopen("input.txt", "r", stdin);
int n, k, doll[505];
long double min= 999999999999999999; // 적당히 아주 큰 수
cin >> n >> k;
for (int i = 0; i < n; i++) cin >> doll[i];
int i = 0;
for (int i = 0; i <= n - k; i++) { //i 시작값
for (int j = i + k - 1; j < n; j++) { //j 끝값 oboe 조심
long double mean = 0;
for (int l = i; l <= j; l++) mean += doll[l];
mean /= (long double)(j - i + 1);
long double sd = 0;
for (int l = i; l <= j; l++) sd += (doll[l] - mean)*(doll[l] - mean);
sd /= (long double)(j - i + 1);
min = min > sd ? sd : min;
}
}
cout.precision(11);
cout << sqrt(min);
}
'알고리즘' 카테고리의 다른 글
BOJ 16469 소년 점프 (0) | 2019.03.28 |
---|---|
BOJ 16953 A → B (0) | 2019.03.27 |
BOJ 1932 정수 삼각형 (0) | 2019.03.26 |
BOJ 1620 나는야 포켓몬 마스터 이다솜 (0) | 2019.03.24 |
BOJ 2580 2239 스도쿠 (0) | 2019.03.23 |