본문 바로가기

백준 문제풀기/JAVA

[백준 1181 JAVA 자바] 단어 정렬

N개의 문자를 입력받아

1. 길이가 짧은 순으로

2. 사전순으로

출력합니다

 

 

 

import java.util.Scanner;
import java.util.Arrays;
import java.util.Comparator;
 
 
public class Main {
	public static void main(String[] args) {
    
		Scanner scan = new Scanner(System.in);
 
		int n = scan.nextInt();
		String[] arr = new String[n];
 
		scan.nextLine();
 
		for (int i=0; i<n; i++) {
			arr[i] = scan.nextLine();
		}
		
		Arrays.sort(arr, new Comparator<String>() {
			public int compare(String s1, String s2) {
				if (s1.length() == s2.length()) {
					return s1.compareTo(s2);
				}  
				else {
					return s1.length() - s2.length();
				}
			}
		});
 
		StringBuilder sb = new StringBuilder();
 
		sb.append(arr[0]).append('\n');
		
		for (int i=1; i<n; i++) {
			if (!arr[i].equals(arr[i - 1])) {
				sb.append(arr[i]).append('\n');
			}
		}
		System.out.println(sb);
	}
}

 

이 코드의 핵심은

Arrays.sort(arr, new Comparator<String>() {~

부분입니다

단순히 Arrays.sort(arr)은 오름차순 정렬이지만

 

Comparator<String>(){...} 를 추가함으로

정렬 조건을 설합니다

 

if (s1.length() == s2.length()) 부분에서

길이가 같은 경우 사전순서로 정렬합니다