반응형
문제 : https://www.acmicpc.net/problem/1181
풀이 :
우선 정렬을 위해 Arrays.sort를 사용했다.
Arrays.sort에 Comparator를 적용시켜, 정렬 방식을 정의할 수 있었다.
compare 메소드에서의 중요한점.!!!!!
a.compareTo(b) 메소드로, 사전순으로 정렬할 수 있었다. => 자동으로 해준다.!!!
추가적으로 compare 메소드의 return값은
양수
0
음수
세가지로 구분되는데,
양수일때 정렬이 바뀌고, 0과 음수일때는 정렬이 바뀌지 않는다.
import java.io.*;
import java.util.*;
/**
*
* 길이가 짧은 것부터
* 길이가 같으면 사전 순으로
* 첫줄에 단어 갯수 N
*/
public class baek1181 {
public static void main(String[] args) throws NumberFormatException, IOException {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
int count = Integer.parseInt(br.readLine());
String[] arr = new String[count];
for (int i = 0; i < count; i++) {
arr[i] = br.readLine();
}
br.close();
Arrays.sort(arr,new Comparator<String>(){
@Override
public int compare(String o1, String o2) {
//길이가 길다면
if(o1.length() == o2.length()) {
return o1.compareTo(o2);
}else {
return o1.length()-o2.length();
}
}
});
System.out.println(arr[0]);
for (int i = 1; i < count; i++) {
// 중복되지 않는 단어만 출력
if (!arr[i].equals(arr[i - 1])) {
System.out.println(arr[i]);
}
}
}
}
반응형
'Java > Algorithm' 카테고리의 다른 글
[Java-Algorithm] 백준 1541 잃어버린 괄호 풀이 (0) | 2021.06.09 |
---|---|
[Java-Algorithm] 백준 10953 풀이 (0) | 2021.06.08 |
[Java-Algorithm] 백준 11719 그대로 출력하기 (0) | 2021.06.07 |
[Java-Algorithm] 백준 11721 열개씩 끊어 출력하기 (0) | 2021.06.07 |
[Java-Algorithm] 백준 2164 풀이 (Queue) (0) | 2021.06.07 |