반응형

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

 Day 0: Weighted Mean



첫 번째 문제!


 Objective 

In the previous challenge, we calculated a mean. In this challenge, we practice calculating a weighted mean. Check out the Tutorial tab for learning materials and an instructional video!

Task 
Given an array, , of  integers and an array, , representing the respective weights of 's elements, calculate and print the weighted mean of 's elements. Your answer should be rounded to a scale of  decimal place (i.e.,  format).

Input Format

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

Constraints

  • , where  is the  element of array .
  • , where  is the  element of array .

Output Format

Print the weighted mean on a new line. Your answer should be rounded to a scale of  decimal place (i.e.,  format).

Sample Input

5
10 40 30 50 20
1 2 3 4 5

Sample Output

32.0

Explanation

We use the following formula to calculate the weighted mean:

And then print our result to a scale of  decimal place () on a new line.



음..... 저는 보통 영어는 읽기....가...눈에.....안들어오죠 ㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋ

그래서 Sample Input 과 Sample Output 만 보고 푸는 경우가 다반사죠 ㅋㅋㅋ

그다음 아래 있는 Explanation 을 보고 대충 아 숫자 저렇게 오키오키 하고 풉니다.


문제 해석

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

2. 분자를 A 개 만큼 입력 받는다.

3. 분모를 A 개 만큼 입력 받는다.

계산식!!!

1. 분자 = 첫번째(분자*분모)+두번째(분자*분모)+세번째(분자*분모)........+A번째(분자*분모)

2. 분모 = 첫번째(분모)+두번째(분모)+세번째(분모).......+A번째(분모)

3. 분자/분모 하여 소수 첫번째 까지 표기!(*반올림*)


자 이제 슈도코딩?!!!이 나름 끝났으니 끄적끄적 코딩!!!!!!

class Solution {

    static void Main(String[] args) {

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

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

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

        Console.WriteLine(weightMin(x_arr, w_arr));

    }

    

    static string weightMin(int[] paramNumerator, int[] paramDenominator)

    {

        int numerator = 0;

        for (var i = 0; i < paramNumerator.Length; i++)

        {

            numerator += paramNumerator[i] * paramDenominator[i];

        }

        

        int denominator = 0;

        foreach(int w_temp in paramDenominator)

        {

            denominator += w_temp;

        }

        

        decimal result = (decimal)numerator/denominator;

        return string.Format("{0:0.0}", result);

    }

}


위 코드 에 대한 설명은.........뭐 필요가 없는거 같네요 ㅋㅋ

그저... 변수들에 네이밍이 왜 저따구인지.........ㅠㅠㅠ

사실 고민하다가 ....걍 읽을수 있는 코드를 짜자! 라고 생각해서 길지만....ㅋㅋㅋ

param분모 param분자... 좋은 네이밍을 찾습니다..ㅠ

메인 에서는 문제와 같이 X,W를 썻구요

실제 weightMin에서는 분자,분모역할이기에 영알못이지만 Denominator, Numerator을 썻습니다.



-후기: 완벽한 코드가 아님 문제자와 의도를 알지만 내맘대로짬 하지만 Hackerrank 에서는 그냥 맞다고 처리해줌!ㅋㅋㅋ(왜냐? Hackerank는 오류를 범할 input을 만들지 않으니깐!) 오늘도 허점이 있는 개발을 짜버렷네요 ㅋㅋㅋ

--문제에 대한 질문: 처음 입력받는 N 은 왜 입력 받는걸까요?..... 분자를 입력받다가 저 숫자를 넘어서면 분모입력받은걸로 처리하려고 하나요? 이건 프로그램에 문제는 아니지만 음...글쎄올시다! 아래 체점하는 Input에는 분명 엔터가! 있는데!!! 음 모르겠습니다 ㅋㅋㅋ


--아래 Congratulations 는 참 보기 좋습니다 ㅋㅋㅋㅋ

Congratulations
You solved this challenge. Would you like to challenge your friends?
Input (stdin)Download
30
10 40 30 50 20 10 40 30 50 20 1 2 3 4 5 6 7 8 9 10 20 10 40 30 50 20 10 40 30 50
1 2 3 4 5 6 7 8 9 10 1 2 3 4 5 6 7 8 9 10 10 40 30 50 20 10 40 30 50 20
Expected OutputDownload
26.1
Compiler Message
Success






*나만의 뻘짓;;고백

첫번째 뻘짓 입니다;;

중간에 count 보시면 ++ 시키죠...

문제를 제대로 읽지 않으면 이렇게 됩니다 ㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋ

신기하게 Run Code 는 정상 통과인데 Submit Code에서 3,4번째 체점만 안되는겁니다 ㅋㅋㅋ

그저 운이좋게 1,2는 통과한거더군요 ㅋㅋㅋ


이 문제의 가장 큰팁? 은 분자=분자*분모! 인거같네요 ㅋㅋ


그럼 이만!!!!!!!!!!!!!!!!!!!!!!









생각해보니깐 Hackerrank의 기능? 사용법? 간략하게 설명을 안했네요 ㅋㅋ 다음글은 Hackerrank의 간략한 소개와 사용법 올릴게요 ㅋㅋㅋ



(출처:https://www.hackerrank.com/challenges/s10-weighted-mean/problem)

반응형

+ Recent posts