알고리즘(백준)/정렬
백준 1181번 단어정렬 [JAVA]
완벽하기 쉽지 않지만 완벽해지려고 노력해야 한다
2020. 12. 26. 18:46
알고리즘 설계:
1. 같은 단어가 여러 번 입력된 경우 한번만 출력되게 하려면 중복을 허용하지않는 set을 사용한다
2. 출력을 할때 길이 순으로 오름차순 정렬을 한다
3. 만약 길이가 같은 문자라면 사전 순으로 출력한다
import java.util.*;
public class Main {
public static void main(String[] args) {
Scanner scan=new Scanner(System.in);
int n=scan.nextInt();
HashSet<String> str1=new HashSet<>();
for(int i=0;i<n;i++) {
String A="";
A=scan.next();
str1.add(A);
}
ArrayList<String> str2=new ArrayList<>(str1); //set을 ArrayList에 담는다
Collections.sort(str2,new Comparator<String>() {
public int compare(String s1,String s2) {
if(s1.length()>s2.length()) //문자 길이로 정렬
return 1;
else if(s1.length()<s2.length())
return -1;
else // 길이가 같은 문자는 사전순으로 정렬
return s1.compareTo(s2);
}
});
for(String s:str2) {
System.out.println(s);
}
}
}