알고리즘, 코딩테스트/(JAVA)백준

(문자열) (JAVA) 백준 1181 단어 정렬

momo0503 2021. 2. 23. 18:05

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 BackJoon1181 {

	public static void main(String[] args) throws IOException{

		BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
		BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(System.out));

		int N = Integer.parseInt(br.readLine());
		String[] arr = new String[N];

		for(int i = 0; i<N; i++) {
			String input = br.readLine();
			arr[i] = input;

		}


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

			@Override
			public int compare(String a, String b) {
				if(a.length()==b.length()) { //단어의 길이가 같으면  입력받은 a,b를 비교하여 정렬한다. 
					return a.compareTo(b); //a를 b와 비교하여  음수 or 0 이면 그대로  양수면 자리를 바꾼다.
				}else {
					return a.length()-b.length(); //길이가 같지 않으면 길이 a와 b의 길이를 비교하여 a-b가 양수면 자리바꿈, 음수면 그대로 	
				}
			}

		});


		bw.write(arr[0]+"\n");

		for(int i=1; i<N; i++) {
			if (!arr[i].equals(arr[i - 1])) { //중복제거
				bw.write(arr[i]+"\n");
			} 

		}

		bw.close();    

	}//main()

}

//첫번째 기준 단어의 길이 , 두번째 기준 사전순 
//bw.write() 버퍼에 저장 . 출력되는것이 아님
//BufferedWriter가 flush되거나 close될대 출력