자바로 백준 1431 풀기

hong030·2023년 3월 18일
0
post-thumbnail
  • 실버 3단계 문제

풀이)

길이를 먼저 length를 통해 비교하고, string에서 숫자를 뽑아 합을 저장하는 변수를 따로 둔다.

내 코드)

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.Arrays;
// 15,460 kb , 140 ms
public class Main {
    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, (o1, o2) -> {
            if(o1.length() - o2.length()==0){   // 1. 길이비교
                int a = getSum(o1);
                int b = getSum(o2);
                if(a - b == 0){                 // 2. 문자열에 숫자값의 합 비교
                    return o1.compareTo(o2);    // 3. 알파벳 순서 = 문자열 비교
                }
                else {
                    return a - b;
                }
            }else {
                return o1.length() - o2.length();
            }
        });
        for (String s : arr) System.out.println(s);
    }
    public static int getSum(String s){
        int a=0;
        s = s.replaceAll("[^0-9]","");
        for(char c : s.toCharArray()) a+=Character.getNumericValue(c);
        return a;
    }
}

profile
자바 주력, 프론트 공부 중인 초보 개발자. / https://github.com/hongjaewonP

0개의 댓글