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