[백준] 1431 시리얼 번호 - Java
클래스 만들고 조건대로 CompareTo 메서드를 오버라이딩 해 주면 된다.
개인적으로 Comparable을 구현하는게 Comparator구현하는거보다 깔끔해 보이는 것 같다..
import java.util.*;
import java.io.*;
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());
Serial[] arr = new Serial[N];
for(int i=0; i<arr.length; i++){
arr[i] = new Serial(br.readLine());
}
Arrays.sort(arr);
for(int i=0; i<N; i++){
System.out.println(arr[i].num);
}
}
}
class Serial implements Comparable<Serial>{
String num;
Serial(String a){
num = a;
}
@Override
public int compareTo(Serial o2){
if(num.length() > o2.num.length()){
return 1;
}else if(num.length() < o2.num.length()){
return -1;
}else{
int sum1 = 0;
int sum2 = 0;
for(int i=0;i <num.length(); i++){
if(num.charAt(i) >= '0' && num.charAt(i) <= '9'){
sum1 =sum1 + num.charAt(i) - '0';
}
}
for(int i=0;i <o2.num.length(); i++){
if(o2.num.charAt(i) >= '0' && o2.num.charAt(i) <= '9'){
sum2 =sum2 + o2.num.charAt(i) - '0';
}
}
if(sum1 > sum2){
return 1;
}else if(sum1 <sum2){
return -1;
}else{
return num.compareTo(o2.num);
}
}
}
}
반응형
'Algorithm > Baekjoon' 카테고리의 다른 글
[백준] 1253 좋다 - Java (0) | 2022.05.08 |
---|---|
[백준] 13144 List of Unique Numbers - Java (0) | 2022.05.08 |
[백준] 2866 문자열 잘라내기 - Java (0) | 2022.05.06 |
[백준] 1637 날카로운 눈 - Java (0) | 2022.05.06 |
[백준] 13702 이상한 술집 - Java (0) | 2022.05.06 |
댓글
이 글 공유하기
다른 글
-
[백준] 1253 좋다 - Java
[백준] 1253 좋다 - Java
2022.05.08 -
[백준] 13144 List of Unique Numbers - Java
[백준] 13144 List of Unique Numbers - Java
2022.05.08 -
[백준] 2866 문자열 잘라내기 - Java
[백준] 2866 문자열 잘라내기 - Java
2022.05.06 -
[백준] 1637 날카로운 눈 - Java
[백준] 1637 날카로운 눈 - Java
2022.05.06