본문 바로가기

programming/algorithm 공부

[hackerrank] s10-basic-statistics Day 0 - Weighted Mean

1. 문제 정보

 

 

 1) 링크 : https://www.hackerrank.com/challenges/s10-weighted-mean/problem?h_r=next-challenge&h_v=zen

 

Day 0: Weighted Mean | HackerRank

Compute the weighted mean.

www.hackerrank.com

 

 2) 혹시 링크가 바뀔경우 문제 파일 PDF : 

s10-weighted-mean-English.pdf
0.21MB

2. 설명

 

 1) 요구사항

    - 정의된 weighted mean 값을 출력하되 소수점 한자리수까지만 출력한다.

    - 입력값은 특정 범위내 자연수이다.

 

 2) 입력값

    입력값은 세가지이다. N과 int 배열 2개가 각 배열의 원소의 값이 공백란으로 구분되어 하나씩 입력된다.

    - 모두 자연수이며 {N | 5 <= N <= 50}, {x | 0 < x < 100, x  X}, {w | 0 < w < 100, w  W}

    - 배열 X와 W의 원소 갯수는 N = n(X) = n(W).

 

 3) 알고리즘 설명

    통계/분석을 하기 위해 배우는 기초적인 수학적 지식을 설명하고 이를 구현하는 내용이다.

    Weighted mean이라는 값은 가중치 평균을 의미한다.

    데이터마다 중요도라고 할지 유의깊게 보아야할 것들은 이렇듯 가중치를 줄 수 있다. 가중치를 결정하는 것은 분석에서 정말 중요한 사안이기도 하다. 물론 여기서는 가중치를 입력받기에 가중치를 스스로 학습시키거나 처리되게끔 만들 필요는 없다.

 

 

전체 소스 : 

import java.io.*;
import java.util.*;
import java.text.*;
import java.math.*;
import java.util.regex.*;

public class Solution {

    public static void main(String[] args) {

        Scanner sc = new Scanner(System.in);
        String tmp = sc.nextLine();
        int N = Integer.parseInt(tmp);
        int[] x = new int[N];
        int sum = 0, wsum = 0;
        for(int inx=0; inx<N; inx++)
        {
            x[inx] = sc.nextInt();
        }
        for(int inx=0; inx<N; inx++)
        {
            int weight = sc.nextInt();
            wsum += weight;
            sum += x[inx]*weight;
        }
        System.out.printf("%.1f",(sum+0.0)/wsum);
    }
}

 

 

반응형