백준공부/java

[백준] 1431번 시리얼 번호 (silver 3

gomduri43 2023. 7. 10. 00:54

import java.io.*;
import java.util.*;

public class Main{
    public static void main(String[] args) throws IOException{
        BufferedReader br=new BufferedReader(new InputStreamReader(System.in));
        BufferedWriter bw=new BufferedWriter(new OutputStreamWriter(System.out));

        int n=Integer.parseInt(br.readLine());
        String[] serial=new String[n];
        for(int i=0; i<n; i++){
            serial[i]=br.readLine();
        }
        Arrays.sort(serial, new Comparator<String>(){
           @Override
            public int compare(String o1, String o2){
                if(o1.length() != o2.length()){
                    return o1.length()-o2.length();
                }
                else {
                    int temp1 = 0;
                    int temp2 = 0;
                    for (int i = 0; i < o1.length(); i++) {
                        if (0 <= o1.charAt(i) - '0' && o1.charAt(i) - '0' <= 9) {
                            temp1 += o1.charAt(i) - '0';
                        }
                        if (0 <= o2.charAt(i) - '0' && o2.charAt(i) - '0' <= 9) {
                            temp2 += o2.charAt(i) - '0';
                        }
                    }
                    if (temp1 == temp2) {
                        return o1.compareTo(o2);
                    }
                    else {
                        return temp1 - temp2;
                    }
                }
           }
        });
        for(String s : serial){
            bw.write(s+"\n");
        }
        bw.flush();
    }
}