Java 코딩테스트
[hackerrank] plus minus
HR대장
2020. 2. 28. 13:50
728x90
배열에서 양수, 음수, 0 숫자를 카운트 한 후, 배열의 길이로 나누기 하여,
소수점 6재 짜리까지 표기하는 문제입니다.
특이한 점은, 소수점 이하 표기시 6자리를 무조건 리턴해야 하며, 0으로 대체하기 위해 formatter를 사용하였습니다.
몫 구하기 예
finalplus =cntplus /(double)endnum;
finalminus = cntminus/(double)endnum;
finalzero = cntzero/(double)endnum;
formatter 구현
DecimalFormat formatter = new DecimalFormat("#,##0.000000");
import java.io.*;
import java.math.*;
import java.security.*;
import java.text.*;
import java.util.*;
import java.util.concurrent.*;
import java.util.regex.*;
public class Solution {
// Complete the plusMinus function below.
static void plusMinus(int[] arr) {
int startnum = 0;
int endnum = arr.length;
int cntzero = 0;
int cntplus = 0;
int cntminus = 0;
double finalzero ;
double finalplus ;
double finalminus ;
DecimalFormat formatter = new DecimalFormat("#,##0.000000");
for (int i=startnum; i<endnum ; i++){
if( arr[i] == 0){
cntzero = cntzero + 1;
}
if( arr[i] > 0){
cntplus = cntplus + 1;
}
if( arr[i] < 0){
cntminus = cntminus + 1;
}
}
finalplus =cntplus /(double)endnum;
finalminus = cntminus/(double)endnum;
finalzero = cntzero/(double)endnum;
System.out.println(formatter.format(finalplus));
System.out.println(formatter.format(finalminus));
System.out.println(formatter.format(finalzero));
}
private static final Scanner scanner = new Scanner(System.in);
public static void main(String[] args) {
int n = scanner.nextInt();
scanner.skip("(\r\n|[\n\r\u2028\u2029\u0085])?");
int[] arr = new int[n];
String[] arrItems = scanner.nextLine().split(" ");
scanner.skip("(\r\n|[\n\r\u2028\u2029\u0085])?");
for (int i = 0; i < n; i++) {
int arrItem = Integer.parseInt(arrItems[i]);
arr[i] = arrItem;
}
plusMinus(arr);
scanner.close();
}
}
728x90