[백준] 15954번 : 인형들

김개발·2021년 10월 13일
0

백준

목록 보기
59/75

문제 푼 날짜 : 2021-10-12

문제

문제 링크 : https://www.acmicpc.net/problem/15954

접근 및 풀이

완전탐색으로 풀 수 있는 문제였다.
주어진 인형들을 연속된 K개만큼 전부 뽑으면서, 뽑았을 때의 표준편차의 최솟값을 구해주면 된다.

코드

#include <iostream>
#include <cstdio>
#include <cmath>

using namespace std;

int N, K;
double ans = 987654321;
double arr[501];

void calculate(int first, int last) {
    double sum = 0;
    int total = last - first + 1;
    for (int i = first; i <= last; i++) {
        sum += arr[i];
    }
    double avg = (double) sum / total;
    double vari = 0;
    
    for (int i = first; i <= last; i++) {
        vari += pow(arr[i] - avg, 2);
    }
    vari /= (double) total;
    
    if (ans > sqrt(vari)) {
        ans = sqrt(vari);
    }
}

int main() {
    ios_base::sync_with_stdio(0);
    cin.tie(0); cout.tie(0);
    
    scanf("%d %d", &N, &K);
    for (int i = 0; i < N; i++) {
        scanf("%lf", &arr[i]);
    }
    
    for (int i = 0; i <= N - K; i++) {
        for (int j = i + K - 1; j < N; j++) {
            calculate(i, j);
        }
    }
    cout.precision(11);
    cout << ans;
    return 0;
}

결과

피드백

소수점 자릿수에 관한 문제인줄알고 그 부분만 계속 고치다가 범위마다 인형의 갯수가 달라지는걸 생각안하고 풀어서 처참하게 틀려버렸다...
급하면 디버깅이 정말 잘안되는 것 같다. 좀 더 차분하게 문제를 풀 수 있도록 연습하자.

profile
개발을 잘하고 싶은 사람

0개의 댓글