ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • [백준 1431번] 시리얼 번호(Java 풀이)
    Algorithm/정렬(Sort) 2020. 3. 2. 21:56

    백준알고리즘 1431번 : 시리얼 번호

     

    주어진 3가지 조건대로 시리얼번호를 정렬해주면 된다.

    1. String.length()를 compareTo method내에 첫번째 조건으로 집어넣는다.

    2. 1번의 조건에서 비교불가한 것은, string의 character값을 하나씩 불러와서

        그 byte 값이  (byte)'0'보다 크고, (byte)'9'보다 작거나 같은 것들만 더해주어 비교한다.

    3. 2번의 조건에서 비교불가한 것은, 각 character별로 하나씩 비교해준다.

     

     

     

     

     

     

    소스 ▽

    더보기
    import java.util.ArrayList;
    import java.util.Comparator;
    import java.util.Scanner;
    
    public class Main {
    
    	public static void main(String[] args) {
    		Scanner sc = new Scanner(System.in);
    
    		int num = Integer.parseInt(sc.nextLine());
    		ArrayList<sort> arr = new ArrayList<sort>();
    		for (int i = 0; i < num; i++) {
    			sort srt = new sort();
    			srt.str = sc.nextLine();
    			arr.add(srt);
    		}
    
    		arr.sort(Comparator.reverseOrder());
    		for (sort sort : arr) {
    			System.out.println(sort.str);
    		}
    
    	}
    
    }
    
    class sort implements Comparable<sort> {
    	String str;
    	
    	@Override
    	public int compareTo(sort o) {
    		if (str.length() < o.str.length()) {
    			return 1;
    		} else if (str.length() > o.str.length()) {
    			return -1;
    		} else {
    			int sum1 = 0;
    			int sum2 = 0;
    
    			for (int i = 0; i < str.length(); i++) {
    				if ((byte) str.charAt(i) >= (byte) '0' && (byte) str.charAt(i) <= (byte) '9') {
    					sum1 += str.charAt(i)-'0';
    				}
    				if ((byte) o.str.charAt(i) >= (byte) '0' && (byte) o.str.charAt(i) <= (byte) '9') {
    					sum2 += o.str.charAt(i)-'0';
    				}
    			}
    			
    			if (sum1 < sum2) {
    				return 1;
    			} else if (sum1 > sum2) {
    				return -1;
    			} else {
    				for (int i = 0; i < str.length(); i++) {
    					if (str.charAt(i) < o.str.charAt(i)) {
    						return 1;
    					} else if (str.charAt(i) > o.str.charAt(i)) {
    						return -1;
    					}
    				}
    			}
    
    		}
    		return 0;
    	}
    
    }
    

     

     

     

    댓글

Designed by Tistory.