boj)1431
2020. 8. 28. 17:34ㆍPS/boj
import java.io.BufferedReader;
import java.io.InputStreamReader;
import java.util.*;
public class Main {
public static void main(String[] args) throws Exception{
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
int N = Integer.parseInt(br.readLine());
ArrayList<String> list = new ArrayList<String>();
for (int i = 0; i < N; i++) {
list.add(br.readLine());
}
// 정렬
Collections.sort(list, new Comparator<String>() {
@Override
public int compare(String s1, String s2) {
if (s1.length() > s2.length()) {
return 1;
} else if (s1.length() < s2.length()) {
return -1;
} else {
int s1Sum = getSum(s1);
int s2Sum = getSum(s2);
if (s1Sum > s2Sum) {
return 1;
} else if (s1Sum < s2Sum){
return -1;
} else {
return s1.compareTo(s2);
}
}
}
});
// 출력
for (int i = 0; i < list.size(); i++) {
System.out.println(list.get(i));
}
}
static int getSum(String s) {
char[] chars = s.toCharArray();
int sum = 0;
for (int i = 0; i < s.length(); i++) {
if ((chars[i] - '0' <= 9) && (chars[i] - '0' >= 0)) {
sum += chars[i] - '0';
}
}
return sum;
}
}
- C++ 풀이 있길래 참조함
- 아직 Collections.sort 쓰는게 조금 어려운듯, 생각은 했는데 구현을 못했음
- 문자열에서 숫자 뽑을때 아스키코드 생각하기