[HackerRank - Java] Day 1 - 1. Plus Minus

2023. 1. 27. 12:52Java/coding test

반응형

Plus Minus

Given an array of integers, calculate the ratios of its elements that are positive, negative, and zero. Print the decimal value of each fraction on a new line with places after the decimal.

Note: This challenge introduces precision problems. The test cases are scaled to six decimal places, though answers with absolute error of up to are acceptable.

Example

arr = [1, 1, 0, -1, -1]

There are n = 5 elements, two positive, two negative and one zero. Their ratios are 25\frac{2}{5} = 0.400000, and 25\frac{2}{5} = 0.400000 and 15\frac{1}{5} = 0.200000. Results are printed as:

0.400000
0.400000
0.200000

Function Description

Complete the plusMinus function in the editor below.

plusMinus has the following parameter(s):

  • int arr[n]: an array of integers

Print

Print the ratios of positive, negative and zero values in the array. Each value should be printed on a separate line with digits after the decimal. The function should not return a value.

Input Format

The first line contains an integer, , the size of the array.
The second line contains space-separated integers that describe .

Constraints

0<n<=1000 < n <= 100
100<=arr[i]<=100-100 <= arr[i] <= 100

Output Format

Print the following 3 lines, each to 6 decimals:

  1. proportion of positive values
  2. proportion of negative values
  3. proportion of zeros

Sample Input

STDIN           Function
-----           --------
6               arr[] size n = 6
-4 3 -9 0 4 1   arr = [-4, 3, -9, 0, 4, 1]

Sample Output

0.500000
0.333333
0.166667

Explanation

There are 3 positive numbers, 2 negative numbers, and 1 zero in the array.
The proportions of occurrence are positive: 36\frac{3}{6} = 0.500000, negative: 26\frac{2}{6} = 0.333333 and zeros: 16\frac{1}{6} = 0.166667.


정수 배열이 주어집니다.
양수, 음수, 0의 각 비율을 출력하는 코드를 작성하세요.

각각은 한줄씩 소수점 이하 6자리까지 표시하여 출력합니다.

six decimal places: 소수점 이하 6자리

n은 0보다 크니 리스트가 비어있는 경우는 고려하지 않아도 됩니다.


static void plusMinus(List<Integer> arr) {
    double totalSize = (double) arr.size();
    List<Integer> positives = new ArrayList<>();
    List<Integer> negatives = new ArrayList<>();
    List<Integer> zeros = new ArrayList<>();
    arr.forEach(i -> {
        if (i > 0) {
            positives.add(i);
        } else if (i < 0) {
            negatives.add(i);
        } else {
            zeros.add(i);
        }
    });
    print(positives.size()/totalSize);
    print(negatives.size()/totalSize);
    print(zeros.size()/totalSize);
}

static void print(double d) {
    System.out.printf("%.6f%n", d);
}
728x90
반응형