白駿1181号:単語のソート



質問リンク
Comparatorソートで簡単に解くことができます.

Javaを使用した解答

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 BaekJoon1181 {
	
	public static void main(String[] args) throws NumberFormatException, IOException {
		BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
		BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(System.out));
		
		int n = Integer.parseInt(br.readLine());
		String[] words = new String[n];
		
		for(int i = 0; i < n; i++) {
			words[i] = br.readLine();					//배열에 입력받은 각 문자열을 넣어줌
		}
		
		Arrays.sort(words, new Comparator<String>() {	
			@Override
			public int compare(String s1, String s2) {
				if(s1.length() == s2.length()) {		//문자열의 길이가 같은 경우
					return s1.compareTo(s2);			//알파벳 오름차순으로 정렬
				} else {								//문자열의 길이가 다른 경우
					return s1.length() - s2.length();	//길이 오름차순으로 정렬
				}
			}
		});
		
		bw.write(words[0] + "\n");						
		
		for(int i = 1; i < n; i++) {
			if(words[i].equals(words[i - 1])) {			//같은 단어가 있을 경우 출력하지 않음
				continue;
			}
			
			bw.write(words[i] + "\n");
		}
		
		bw.flush();
	}
}

ふくガス


Comparatorを継承して直接式を確立する過程はまだ熟知していないので、さらに練習する必要があります.