N개의 단어가 들어온다.
아래 2개 조건에 따라 정렬한다.
길이 기준으로 오름차순 정렬한다.
길이가 같을 경우 사전 순으로(ASCII 코드 기준) 정렬한다.
Class를 생성하고, Comparable 인터페이스를 통해 문자열 길이를 기준으로 오름차순 정렬되도록 구현하면 된다.
이 때 중복되는 문자열은 한 번만 출력한다.
import java.util.*;
class Word implements Comparable<Word>{
int length; // 문자열 길이 저장
String str; // 문자열
public Word(String str) {
length = str.length();
this.str = str;
}
@Override
public int compareTo(Word w) {
if(w.length==this.length) {
// 문자열 길이가 같을 경우 사전 순으로 정렬
return this.str.compareTo(w.str);
}
return this.length - w.length;
// 문자열 길이를 기준으로 오름차순 정렬
}
}
public class Main {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
int N = sc.nextInt();
Word[] words = new Word[N];
String str;
for(int i =0;i<N;i++) {
str = sc.next();
words[i] = new Word(str);
}
Arrays.sort(words); // Sorting 과정
StringBuilder sb = new StringBuilder();
String tmp = ""; // 이전에 출력했던 값을 저장할 변수
String now;
for(int i =0;i<N;i++) {
now = words[i].str;
if(now.equals(tmp)) {
// 만약 이전에 출력했던 값과 동일한 경우 재출력하지 않기 위해
// 아래 명령을 수행하지 않는다.
continue;
}
tmp = now;
sb.append(tmp+"\n");
}
System.out.println(sb);
}
}