Description
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 6 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 2/5 = 0.400000, 2/5 = 0.400000 and 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
PrintPrint the ratios of positive, negative and zero values in the array. Each value should be printed on a separate line with 6digits after the decimal. The function should not return a value.
Input Format
The first line contains an integer, n, the size of the array.The second line contains space-separated integers that describe arr[n].
Constraints
Output Format
Print the following lines, each to decimals:
- proportion of positive values
- proportion of negative values
- 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:3/6=0.500000 , negative:2/6=0.333333 and zeros:1/6=0.166667 .
Solution 1. float + format
public static void plusMinus(List<Integer> arr) {
// Write your code here
int len = arr.size();
int positive = 0;
int negative = 0;
int zero = 0;
Collections.sort(arr);
for(int i =0; i<len; i++){
if(arr.get(i) < 0 ){
negative++;
}else if(arr.get(i) == 0){
zero++;
}else{
positive = len-i;
break;
}
}
System.out.format("%6f", (float)positive/(float)len);
System.out.println();
System.out.format("%6f", (float)negative/(float)len);
System.out.println();
System.out.format("%6f", (float)zero/(float)len);
System.out.println();
}
6자리의 정밀도 표현까지 기재되어 있으므로 소수점계산을 위해 7자리까지 표현이 가능한 float를 사용해 계산하고 System.out.format 을 통해 기재된 포맷으로 출력합니다.
Reference
'알고리즘 > HackerRank' 카테고리의 다른 글
[HackerLangk] Diagonal Difference - 문제풀이 (0) | 2022.03.15 |
---|---|
[HackerLank] Lonely Integer - 문제풀이 (0) | 2022.03.15 |
[HackerLank] Find the Median - 문제풀이 (0) | 2022.03.13 |
[HackerLank] TimeConversion - 문제풀이 (0) | 2022.03.12 |
[HackerRank] Mini-Max Sum - 문제풀이 (0) | 2022.03.12 |