반응형
해커랭크-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 |