나는 Set을 사용했으나 그냥 처음부터 배열에 담고
출력하면서 앞에것과 비교하면서 같지않다면 출력하는 형식으로 해도 된다.
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.BufferedReader;
import java.util.*;
public class Main
{
public static void main(String[] args) throws IOException{
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
int endPoint = Integer.parseInt(br.readLine());
Set<String> set = new TreeSet<>();
for(int i=0; i<endPoint;i++){
set.add(br.readLine());
}
String[] strArray = new String[set.size()];
inputStringArray(set, strArray);
sortArray(strArray);
for(String a : strArray){
System.out.println(a);
}
}
public static void inputStringArray(Set<String> set, String[] strArray){
Iterator<String> iter = set.iterator();
int cur =0;
while(iter.hasNext()){
strArray[cur] = iter.next();
cur++;
}
}
public static void sortArray(String[] strArray){
Arrays.sort(strArray, (a, b) -> {
if (a.length() == b.length()) {
return a.compareTo(b);
} else {
return a.length()- b.length();
}
});
}
}
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.BufferedReader;
import java.util.*;
public class Main {
public static void main(String[] args) throws IOException {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
int endPoint = Integer.parseInt(br.readLine());
Set<String> set = new TreeSet<>();
for (int i = 0; i < endPoint; i++) {
set.add(br.readLine());
}
List<String> list = new LinkedList<>(set); // String 배열 대신 List<String>으로 변경
sortList(list);
for (String a : list) {
System.out.println(a);
}
}
public static void sortList(List<String> list) {
list.sort((a, b) -> {
if (a.length() == b.length()) {
return a.compareTo(b);
} else {
return a.length() - b.length();
}
});
}
}