본문 바로가기

코딩테스트/HackerRank

HackerRank~BigDecimal

반응형

해커랭크-BigDecimail: https://www.hackerrank.com/challenges/java-bigdecimal/problem?isFullScreen=true

 

Java BigDecimal | HackerRank

Learn to handle huge decimals using Java's BigDecimal class.

www.hackerrank.com

문제설명
실수의 문자열의 배열이 주어지면 내림차순으로 정렬합니다. 각 숫자는 stdin에서 읽은 것과 정확히 동일한 형식으로 인쇄되어야 합니다. 동일한 값의 경우, 입력 된 순으로 출력해야 합니다.

입출력 예
최초에 입력된 실수는 앞으로 입력 될 실수의 수 입니다.
Input

9
-100
50
0
56.6
90
0.12
.12
02.34
000.000

Output

90
56.6
50
02.34
0.12
.12
0
000.000
-100

풀이

import java.math.BigDecimal;
import java.util.*;

public class post {
    public static void main(String[] args){
        //Input
        Scanner sc= new Scanner(System.in);
        int n=sc.nextInt();
        String []s=new String[n+2];
        for(int i=0;i<n;i++){
            s[i]=sc.next();
        }
        sc.close();

        //Write your code here
        Arrays.sort(s, new Comparator<String>() {
            @Override
            public int compare(String a, String b){
                if (a == null || b == null){
                    return 0;
                }else{
                    BigDecimal tmpA = new BigDecimal(a);
                    BigDecimal tmpB = new BigDecimal(b);

                    return tmpB.compareTo(tmpA);
                }    
            }
        });


        //Output
        for(int i=0;i<n;i++)
        {
            System.out.println(s[i]);
        }
    }
}

java의 compareTo에 대한 자세한 설명은 아래 포스팅을 참고해 주세요.
https://labfor310.tistory.com/11

 

Java~문자열, 숫자, 날짜 비교 (compareTo)

시작에 앞서 숫자의 경우, 비교연산자로 쉽게 비교를 할 수 있습니다만, 문자와 날짜의 경우 어떻게 비교를 할지 조금은 난감합니다. 그럴때 사용할 수 있는 메소드인 compareTo에 대해 알아보도록

labfor310.tistory.com

입력받은 문자열의 배열인 s[]의 길이가 입력받은 문자의 수보다 많기 때문에 new String[n+2], 비교 처리인 compare(String a, String b)에서 a와 b가 null인 경우의 처리를 추가했습니다.

반응형

'코딩테스트 > HackerRank' 카테고리의 다른 글

HackerRank~Tag Content Extractor  (0) 2023.07.08
HackerRank~Java Regex2  (0) 2023.06.27
HackerRank~Java Regex  (0) 2023.06.22
HackerRank~Java Loop2  (0) 2023.06.16