Development Logs/Algorithms
[JAVA] 백준 1181번 : 단어 정렬 (정렬)
유뱅유뱅뱅
2020. 10. 23. 11:13
반응형
문제
해결 방안
1. HashSet을 이용하여 입력을 받아 중복된 경우를 제거해준다.
2. ArrayList에 담아서 해당 ArrayList를 Collections.sort()를 이용하여 정렬해준다.
이 때, new Comparator를 사용하여 길이가 짧은 것과 길이가 같으면 사전순으로 정렬하는 코드를 구현해준다.
코드
import java.io.BufferedReader;
import java.io.InputStreamReader;
import java.util.ArrayList;
import java.util.Collections;
import java.util.Comparator;
import java.util.HashSet;
import java.util.Iterator;
import java.util.List;
public class Main {
public static void main(String[] args) throws Exception{
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
String str = br.readLine();
int n = Integer.parseInt(str);
HashSet<String> set = new HashSet<>();
for(int i=0; i<n; i++) {
set.add(br.readLine());
}
List<String> words = new ArrayList<>(set);
Collections.sort(words, new Comparator<String>() {
@Override
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 word : words) {
System.out.println(word);
}
}
}
반응형