[백준,BOJ 1181] 단어 정렬(JAVA 구현)
코테/백준 온라인 저지(BOJ)

[백준,BOJ 1181] 단어 정렬(JAVA 구현)

반응형

-풀이

  이 문제의 경우 역시 좌표 정렬하기 문제와 마찬가지로 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]); // 문자열 출력
    }
  }
}
반응형