TIL - 21.01.31
자료구조
| Collection / Map | 순서 | 중복 | 종류 |
| —————- | ——————————- | ——————– | ——————————————- |
| List | 있음 | 가능 | Vector, ArrayList, LinkedList |
| Set | 있음 | 불가능 | HashSet, Linked HashSet, SortedSet, TreeSet |
| Map | Key와 Value 값
순서 유지 X | 키 중복 X, 값 중복 O | HashTable, HashMap, SortedMap, TreeMap |
알고리즘 문제의 다음 조건을 만족하는 자료 구조를 생각하며 TreeMap을 사용하게 되었다.
- 중복을 제거
- 글자 수가 적은 순서
- 알파벳이 빠른 순서
public class N1181 {
public static TreeSet<Word> arr = new TreeSet<>();
public static void main(String[] args) throws IOException {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
StringBuilder sb = new StringBuilder();
int N = Integer.parseInt(br.readLine());
for (int i = 0; i < N; i++) {
arr.add(new Word(br.readLine().trim()));
}
Iterator<Word> it = arr.iterator();
while (it.hasNext()) {
sb.append(it.next().str).append("\n");
}
System.out.println(sb);
}
private static class Word implements Comparable<Word> {
private Integer length;
private String str;
public Word(String str) {
this.length = str.length();
this.str = str;
}
@Override
public int compareTo(Word o) {
if (this.length < o.length) {
return -1;
} else if (this.length == o.length) {
return this.str.compareTo(o.str); //동일한 단어라면 0이 리턴되고 중복이 제거되고 저장된다. 그리고 알파벳 순서로 정렬됨
} else {
return 1;
}
}
}
}
활용
REF
- https://lktprogrammer.tistory.com/174
- https://codechacha.com/ko/java-string-compare/