-
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 쓰는게 조금 어려운듯, 생각은 했는데 구현을 못했음
- 문자열에서 숫자 뽑을때 아스키코드 생각하기