[백준] 1181번 단어정렬 - Java
문제 출처
※ 풀이
데이터를 입력받은 뒤
받은 데이터들을 Comparable 로 정렬을 어떻게 할 지 커스터마이징하여 단어를 문제에서 원하는 순서대로 정렬한 뒤
중복값은 제하고 출력하는 방법이다.
참고로 Comparable 정의는 두 수가 있을 때 양수 반환시 서로 자리를 바꾸고 0이나 음수를 반환하면 자리를 바꾸지 않는 방식으로 동작한다.
※ 소스코드
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.*;
import java.util.stream.Collectors;
public class Main {
public static void main(String[] args) throws IOException {
//input
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
StringTokenizer st = new StringTokenizer(br.readLine());
int n = Integer.parseInt(st.nextToken());
List<String> list = new ArrayList<>();
for (int i = 0; i < n; i++) {
list.add(br.readLine());
}
List<String> collect = list.stream().sorted((s1, s2) -> {
if (s1.length() > s2.length()) {
return 1;
} else if (s1.length() < s2.length()) {
return -1;
} else {
for (int i = 0; i < s1.length(); i++) {
if (s1.charAt(i) < s2.charAt(i)) {
return -1;
} else if (s1.charAt(i) > s2.charAt(i)) {
return 1;
}
}
return 0;
}
}).collect(Collectors.toList());
StringBuilder stb = new StringBuilder();
stb.append(collect.get(0)).append('\n');
for (int i = 1; i < n; i++) {
if (!collect.get(i).equals(collect.get(i - 1))) {
stb.append(collect.get(i)).append('\n');
}
}
System.out.println(stb);
}
}
* 반례
6
aba
aab
aaa
ab
abb
aaaa
3
a
a
a
4
b
a
bb
aa
'알고리즘 > 백준' 카테고리의 다른 글
[백준] 2675번 문자열 반복 - Java (0) | 2021.03.04 |
---|---|
[백준] 1085번 직사각형에서 탈출 - Java (0) | 2021.03.04 |
[백준] 1436번 영화감독 숌 - Java (0) | 2021.03.04 |
[백준] 1157번 단어 공부 - Java (0) | 2021.03.03 |
[백준] 2908번 상수 - Java (0) | 2021.03.03 |