[자바JAVA]Big Sorting 해커랭크
💡 핵심 요약 (TL;DR)
'Big Sorting 해커랭크' 알고리즘 문제의 요구사항을 분석하고 최적의 자료구조와 연산 방식을 적용해 구현한 풀이다. String 타입의 정렬안된 배열을 숫자오름차순으로 숫자를 정렬하는 문제이다.
문제
String 타입의 정렬안된 배열을 숫자오름차순으로 숫자를 정렬하는 문제이다.
Consider an array of numeric strings where each string is a positive number with anywhere from to digits. Sort the array’s elements in non-decreasing, or ascending order of their integer values and return the sorted array.
- 입출력예시1
1 | //입력 |
- 입출력예시2
1 | //입력 |
- 입출력예시3
1 | //입력 |
첫 시도: NumberFormatException
처음에는 String[]을 long[]로 바꾼 뒤 오름차순 정렬 후 다시 String[]로 만들어서 출력하고자했다.
하지만 숫자가 long보다 더 커서 NumberFormatException이 발생했다.
1 | public class BigSorting { |
성공한 코드
람다식을 활용하여 unsorted 배열을 정렬했다.x.compareTo(y)는 int를 리턴한다.
- x == y면 0을 출력,
- x > y 면 1을 출력,
- x < y 면 -1을 출력한다
리턴한 값을 기준으로 sort한다.
1 | public class BigSorting { |
arr, x, y를 출력하면 아래와 같다.
근데 x.compareTo(y): 2가 어떻게 나왔는지 구글링을 해도 모르겠다… 왜 2가 나왔지?
그래서 그냥 암기하기로했다…..
1 | 시작 arr: [31415926535897932384626433832795, 1, 3, 10, 3, 5] x: 1 y:31415926535897932384626433832795 x.length() - y.length(): -31 |
참고
- 람다식 : https://codeman77.tistory.com/40
- compareTo() : https://www.tutorialspoint.com/java/number_compareto.htm
해커랭크의 다른 문제 풀이가 보고싶다면?
[자바JAVA]Big Sorting 해커랭크
https://sowon-dev.github.io/2021/03/06/210307al-hackkerrank-bigsorting/