-
Notifications
You must be signed in to change notification settings - Fork 6
Expand file tree
/
Copy pathBigSorting.java
More file actions
71 lines (60 loc) · 1.97 KB
/
BigSorting.java
File metadata and controls
71 lines (60 loc) · 1.97 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
package hackerrank;
import java.util.Arrays;
import java.util.Scanner;
public class BigSorting {
static String[] bigSorting(String[] unsorted) {
//String 타입의 정렬안된 배열을 숫자오름차순으로 숫자를 정렬하는 문제.
//첫시도 -실패-> Exception in thread "main" java.lang.NumberFormatException: For input string: "31415926535897932384626433832795"
/*
//String arr를 long arr로 바꾼다.
long[] arr = new long[unsorted.length];
for (int i = 0; i < unsorted.length; i++) {
arr[i] = Long.parseLong(unsorted[i]);
}
//long 배열을 오름차순정렬한다.
Arrays.sort(arr);
//정렬한 long배열을 String 배열로 바꾼 뒤 리턴한다.
String[] result = new String[unsorted.length];
for (int i = 0; i < unsorted.length; i++) {
result[i] = Long.toString(arr[i]);
}
System.out.println(Arrays.toString(result));
return result;
*/
//sol4 람다식 + sort
// System.out.println(Arrays.toString(unsorted));
Arrays.sort(unsorted, (x, y) -> {
// System.out.print("시작 arr: "+Arrays.toString(unsorted) + " x: "+x+" y:"+y);
if (x.length() == y.length()) {
// System.out.print(" x.compareTo(y): "+x.compareTo(y)+"\n");
return x.compareTo(y); //자리수에 상관없이 첫째자리만 보고 오름차순 정렬
}else {
// System.out.print(" x.length() - y.length(): "+ (x.length() - y.length()) +"\n");
return x.length() - y.length(); //자리수에 상관한 오름차순 정렬
}
});
return unsorted;
}
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
int n = sc.nextInt();
String[] arr = new String[n];
for (int i = 0; i < n; i++) {
arr[i] = sc.next();
}
arr = bigSorting(arr);
for (int i = 0; i < arr.length; i++) {
System.out.println(arr[i]);
}
sc.close();
/* sample input
6
31415926535897932384626433832795
1
3
10
3
5
*/
}
}