백준 풀이/자바(Java)
백준 1431 자바 - 시리얼 번호
콘스_
2024. 8. 4. 11:32
// 시리얼 번호
package Silver_III_3;
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.Arrays;
import java.util.Comparator;
public class Ex1431 {
public static void main(String[] args) throws IOException {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
int n = Integer.parseInt(br.readLine());
String[] arr = new String[n];
for (int i = 0; i < n; i++) {
arr[i] = br.readLine();
}
// 조건에 맞게 정렬
Arrays.sort(arr, new Comparator<String>() {
public int compare(String s1, String s2) {
if (s1.length() == s2.length()) { // 길이가 같을 경우
int sum1 = numSum(s1);
int sum2 = numSum(s2);
if (sum1 == sum2) { // 3번의 경우
return s1.compareTo(s2);
} else { // 2번의 경우
return sum1 - sum2;
}
}
else { // 1번의 경우
return s1.length() - s2.length();
}
}
});
StringBuilder sb = new StringBuilder();
for (int i = 0; i < n; i++) {
sb.append(arr[i]).append("\n");
}
System.out.print(sb);
}
static int numSum(String s) {
int sum = 0;
for (int i = 0; i < s.length(); i++) {
if (Character.isDigit(s.charAt(i))) {
sum += Integer.parseInt(String.valueOf(s.charAt(i)));
}
}
return sum;
}
}