728x90
반응형
해커랭크 - https://www.hackerrank.com/
Prepare > Java > BigNumber > Java BigDecimal
Java의 BigDecimal 클래스는 임의 정밀도의 부호 있는 십진수를 처리할 수 있습니다. 그들에 대한 지식을 테스트합시다!
n개의 실수 문자열이 있는 배열 s가 주어지면 내림차순으로 정렬하십시오. 하지만 잠깐만요, 더 있습니다! 각 숫자는 stdin에서 읽은 것과 정확히 동일한 형식으로 출력되어야 합니다. 즉, .1은 .1로 인쇄되고 0.1은 0.1로 출력됩니다. 두 숫자가 수치적으로 동일한 값을 나타내는 경우(예: .1=0.1) 입력으로 수신된 것과 동일한 순서로 나열되어야 합니다.
아래 편집기의 잠금 해제된 섹션에서 코드를 완성하세요. 위의 지침에 따라 배열 s의 요소를 재정렬해야 합니다.
Input Format
- 첫 번째 줄은 정수 문자열의 수를 나타내는 단일 정수 n으로 구성됩니다.
- n개의 후속 라인의 각 라인 i는 sᵢ 값을 나타내는 실수를 포함합니다.
Constraints
- 1 ≤ n ≤ 200
- 각 sᵢ는 최대 300자리입니다.
Output Format
편집기에서 잠긴 스텁 코드는 배열 s의 내용을 stdout으로 출력합니다. 배열의 요소를 재정렬하는 작업만 담당합니다.
Sample Input
9
-100
50
0
56.6
90
0.12
.12
02.34
000.000
Sample Output
90
56.6
50
02.34
0.12
.12
0
000.000
-100
Code
import java.math.BigDecimal;
import java.util.*;
class Solution{
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, 0, n, new Comparator<String>() {
public int compare(String s1, String s2) {
BigDecimal b1 = new BigDecimal(s1);
BigDecimal b2 = new BigDecimal(s2);
return b2.compareTo(b1);
}
});
//Output
for(int i=0;i<n;i++)
{
System.out.println(s[i]);
}
}
}
Arrays.sort() 배열 s의 인덱스 0부터 n까지(n-1) Comparator로 정렬
Comparator 두 매개변수 객체를 비교
Comparator 사용시 compare()메소드 필수 구현
compare() 메소드에 객체를 비교할 기준을 정의 = 비교할 두 매개변수 객체
compareTo
=> 음수 : 타 원소 큼 b2 < b1
=> 0 : 두 원소 같음 b2 = b1
=> 양수 : 본인이 큼 b2 > b1
개인 공부를 위한 포스팅입니다.
모든 번역, 코드는 완벽하지 않을 수 있습니다.
728x90
반응형
'> 개발-IT-인터넷 > > JAVA' 카테고리의 다른 글
[해커랭크(HackerRank) JAVA 풀이] - Java BigInteger (0) | 2023.09.22 |
---|---|
[해커랭크(HackerRank) JAVA 풀이] - Java Primality Test (0) | 2023.09.21 |
[해커랭크(HackerRank) JAVA 풀이] - Tag Content Extractor (0) | 2023.09.19 |
[해커랭크(HackerRank) JAVA 풀이] - Valid Username Regular Expression (0) | 2023.09.19 |
[해커랭크(HackerRank) JAVA 풀이] - Java Regex 2 - Duplicate Words (0) | 2023.09.19 |