글자수 순서대로 오름차순으로 정렬하되, 글자수가 같으면 사전순대로 정렬하는 문제. 단 같은 글자는 한번만 출력한다. Comparator를 사용해 정렬하지만 문자열을 정렬할때능 CompareTo를 사용해 정렬한다. CompareTo는 비교하는 객체가 비교하려는 객체보다 앞에 있거나 같은 위치에 있다면 음수와 0을 반환하지만 뒤에 있다면 양수를 반환한다. 따라서 사전순서대로 정렬을 할 수 있다.
그리고 같은 단어는 한번만 출력하면 되기에, 정렬을 한다음 출력한 단어를 저장하고 저장한 단어와 출력한 단어를 비교해 같지 않다면 출력을 하는 식으로 했다.
import java.util.Arrays;
import java.util.Scanner;
public class Main {
public static void main(String[] args) {
Scanner scanner=new Scanner(System.in);
String[] arr;
String next="";
int n= scanner.nextInt();
arr=new String[n];
scanner.nextLine();
for(int i=0;i<n;i++)
arr[i]= scanner.nextLine();
Arrays.sort(arr,(x1,x2)->{
if(x1.length()==x2.length())
return x1.compareTo(x2);
else
return x1.length()-x2.length();
});
for(int i=0;i<n;i++) {
if(!arr[i].equals(next)){
System.out.println(arr[i]);
}
next=arr[i];
}
}
}
'Algorithm > 백준' 카테고리의 다른 글
백준 15649번 : N과 M(1) (0) | 2021.05.14 |
---|---|
백준 18870번: 좌표 압축 (0) | 2021.05.12 |
백준 11651번 좌표정렬하기2 (0) | 2021.05.07 |
백준 11650번 좌표정렬하기(Java) (0) | 2021.05.07 |
백준 1427번 소트인사이드(Java) (0) | 2021.04.07 |