반응형

코딩놀이! 10 Days of Statistics(HackerRank)

 Day 1-3: Standard Deviation



세 번째 문제!

 Objective 

In this challenge, we practice calculating standard deviation. Check out the Tutorial tab for learning materials and an instructional video!

Task 
Given an array, , of  integers, calculate and print the standard deviation. Your answer should be in decimal form, rounded to a scale of  decimal place (i.e.,  format). An error margin of  will be tolerated for the standard deviation.

Input Format

The first line contains an integer, , denoting the number of elements in the array. 
The second line contains  space-separated integers describing the respective elements of the array.

Constraints

  • , where  is the  element of array .

Output Format

Print the standard deviation on a new line, rounded to a scale of  decimal place (i.e.,  format).

Sample Input

5
10 40 30 50 20

Sample Output

14.1

Explanation

First, we find the mean

Next, we calculate the squared distance from the mean, , for each :

Now we can compute , so:

Once rounded to a scale of  decimal place, our result is .


음 세번째 문제는 Standard Deviation!!! 간단한 표준 편차 구하기 입니다.


그럼 바로 문제 해석 들어갑니닷!


문제해석!

1. 입력받을 숫자의 갯수를 n 입력받습니다.

2. n 개 만큼 입력 받는다.

3. 입력 받은 n개의 숫자 평균을 구한다.

4. n개의 숫자중 (첫번째 숫자 - 평균) + (두번째 숫자 - 평균) + .....(n번째 숫자 - 평균) 을 모두 더한다

5. 다시 n으로 나눈다!

6. 루트씌운다! 끝.

계산식!!!

1.없음! 필요...할까요??

(출처:http://www.ktword.co.kr/abbr_view.php?m_temp1=1657)


역시 말보단 코딩!

 class Solution {

     static void Main(String[] args)

    {

        /* Enter your code here. Read input from STDIN. Print output to STDOUT. Your class should be named Solution */

        int inputCount = Convert.ToInt32(Console.ReadLine());

        int[] arr_values = Array.ConvertAll(Console.ReadLine().Split(' '), int.Parse);

        Console.WriteLine(standardDeviation(arr_values, inputCount));

    }

    static double standardDeviation(int[] arr_values, int inputCount)

    {

        if (inputCount != arr_values.Length)

        {

            //return fail;throwException

        }

        int arrSum = 0;

        foreach(int values in arr_values)

        {

            arrSum += values;

        }

        int arrAvg = arrSum / inputCount;


        double deviationSum = 0;

        foreach(int value in arr_values)

        {

            deviationSum += Math.Pow(value - arrAvg, 2);

        }

        return Math.Round(Math.Sqrt(deviationSum/inputCount),1);

    }

}


끝입니다!ㅎㅎ

새벽이 다가오네요...아 잠와...


후기!. 사실 이 문제를 어쩌면 엄청나게 고민하면서 계산식이 들어가야 하는게 제대로된 공부라고 생각해요.

사실 제가 짠 코드는 보시는바와 같이

C#의 Math라는 Class를 이용해서 정말 편리하게 풀었어요 ㅎㅎ

Math.Pow(제곱대상, 몇제곱?) - 제곱근을 나타내는거고요 Pow의 리턴타입은 double입니다.

Math.Sqrt(루트안에값, 루트몇?) - 루트를 구해주는 함수입니다....이거없으면ㅠㅠ정말 고민이였을거예요...까먹은지가 너무 오래되서 ㅎㅎ

Math Class에 대한 자세한 설명은 (https://docs.microsoft.com/ko-kr/dotnet/api/system.math?view=netframework-4.7.2) 여기 나와있습니다. 정말 막강한 기능이 많아요. 똑똑한 사람들이 짜놓은 공통함수? 라고 생각되네요.


개발할때 자신만의 공통함수를 만들어 놓는것도 중요하지만 이미 Framework에서 지원하는 기능은 잘 이용하는게 좋겠죠?ㅎㅎ



RunCode!!

Congratulations!

You have passed the sample test cases. Click the submit button to run your code against all the test cases.

Input (stdin)
5
10 40 30 50 20
Your Output (stdout)
14.1
Expected Output 14.1 


역시나 크흐흐 Easy만 풀고싶다능...


그렇타면! submit!!!!!!!!!

Congratulations
You solved this challenge. Would you like to challenge your friends?
Input (stdin)Download
5
10 40 30 50 20
Expected OutputDownload
14.1
Compiler Message Success 


예쑤!~  다시한번 30점!! 득템입니다 ㅎㅎ



Day 1 에는 3문제 모두 Clear!!

Day 2에도...3문제가 있네요...

그럼이만!


(출처:https://www.hackerrank.com/challenges/s10-standard-deviation/problem)

반응형

+ Recent posts