반응형
-풀이
이 문제의 경우 역시 좌표 정렬하기 문제와 마찬가지로 Comparator 인터페이스의 compare 메서드를 재정의해 비교하여 정렬하면 되는 문제이다. 다만 주의해야 할 점은 동일한 단어가 등장할 경우 한 번만 출력해야 한다는 점이다.
import java.util.Arrays;
import java.util.Comparator;
import java.util.Scanner;
class Main {
public static void main(String[] args) {
Scanner in = new Scanner(System.in);
int n = in.nextInt();
String arr[] = new String[n]; // 문자열 배열에 데이터 저장
for(int i =0;i<arr.length;i++) {
arr[i] = in.next();
}
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 Integer.compare(o1.length(),o2.length());
}
}
});
System.out.println(arr[0]); // 중복을 고려해 출력하기 위해 첫 번째 문자열은 출력
for(int i=1;i<arr.length;i++) { // 1번 인덱스부터 이전 인덱스와 비교해 출력하기 때문에 위의 처리는 문제X
if(arr[i-1].equals(arr[i])) continue; // 같은 문자열이라면 건너뛰고
System.out.println(arr[i]); // 문자열 출력
}
}
}
반응형