문제
- 문제에 나온 순서대로 정렬해서 출력하면 된다.
- 정렬 및 구현 문제
해설 및 코드
package BAEKJOON;
import java.util.*;
public class 시리얼번호_1431 {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
int N = sc.nextInt();
PriorityQueue<String> pq = new PriorityQueue<String>(new Comparator<String>() {
@Override
public int compare(String o1, String o2) {
// TODO Auto-generated method stub
if (o1.length() == o2.length()) {
int len1 = 0;
int len2 = 0;
for (int i = 0; i < o1.length(); i++) {
if (o1.charAt(i) <= '9' && o1.charAt(i) >= '1') {
len1 += o1.charAt(i) - '0';
}
}
for (int i = 0; i < o2.length(); i++) {
if (o2.charAt(i) <= '9' && o2.charAt(i) >= '1') {
len2 += o2.charAt(i) - '0';
}
}
if (len1 == len2) {
return o1.compareTo(o2);
}
return len1 < len2 ? -1 : 1;
}
return o1.length() - o2.length();
}
});
for (int i = 0; i < N; i++) {
pq.add(sc.next());
}
while(!pq.isEmpty()) {
System.out.println(pq.poll());
}
}
}
- PriorityQueue를 이용하여 순서를 정렬했다.
- 아스키코드를 이용해 숫자임을 판별해서, 숫자만 더해주는 게 핵심이다.
Java 문법 정리
PriorityQueue 비교
PriorityQueue<String> pq = new PriorityQueue<String>(new Comparator<String>(){
@Override
public int compare(String o1, String o2){
}
});
- new Comparator 객체를 선언하여 Override를 한다.
'IT > 알고리즘' 카테고리의 다른 글
[BOJ] 가장 긴 증가하는 부분수열2 12015.java (0) | 2021.06.21 |
---|---|
[BOJ] 합이0 3151.java (0) | 2021.06.01 |
[BOJ] 배열돌리기1_16926.java (0) | 2021.04.09 |
[알고리즘 이론] 카데인 알고리즘(Kadane's Alogrithm) (0) | 2021.03.23 |
[BOJ] 소년점프 16469.java (0) | 2021.03.20 |