알고리즘 연습

[1181] 단어 정렬 - Java

밀깜 2022. 2. 8. 09:54

 

1. 배운점

Comparator 활용

https://docs.oracle.com/javase/8/docs/api/

 

Java Platform SE 8

 

docs.oracle.com

2. 개선할 점

- 다음엔 람다식을 활용해서 풀어보도록 한다.

 

3. 궁금한 점

 

4. 풀이

import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.OutputStreamWriter;
import java.util.Arrays;
import java.util.Comparator;

public class Main {
	
	public static void main(String [] args) {
		
		// Import Reader
		BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
		
		try {
			// Read  the number of words
			int words = Integer.parseInt(br.readLine());
			
			// Allocate values to the array
			String [] arr = new String [words];
			int i = 0;
			
			while(i < words) {
				arr[i++] = br.readLine();
			}
			
			// Sorting  using Comparator
			Arrays.sort(arr, new Comparator<String>() {
				
				// Sorting method using compare
				public int compare(String str1, String str2) {
					
					// If lengths are same
					if(str1.length() == str2.length()) {
						return str1.compareTo(str2);
					}
					
					// etc
					else {
						return str1.length() - str2.length();
					}
				}
			});
			
			// Printing the result using BufferedWriter
			BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(System.out));
			
			bw.write(arr[0]+'\n');
			
			for(int j = 1; j < words; j++) {
				
				if(!arr[j].equals(arr[j-1])) {
					bw.write(arr[j]+'\n');
				}
			}
			bw.flush();
			
		} catch (NumberFormatException e) {
			e.printStackTrace();
		} catch (IOException e) {
			e.printStackTrace();
		}
	}
}