티스토리 뷰

728x90

문제

- 첫째 줄에 단어 개수 N을 입력받음

- N개의 줄에 걸쳐 알파벳 소문자로 이루어진 단어들을 N개 입력받음

- 아래의 조건에 따라 정렬

   1. 길이가 짧은 것부터

   2. 길이가 같으면 사전 순으로 

 

고찰

Comparator를 이용하여 정렬하고 싶었지만, 오랜만에 코드를 짜는 것이였기 때문에 잘 기억이 안나 Comparable과 Comparator에 대해 다시 공부를 하고 코드를 작성하였다..  

 

 2022.07.05 - [JAVA] - [JAVA] Comparable / Comparator

 

[JAVA] Comparable / Comparator

객체들을 정렬하기 위해서는 정렬 기준이 필요하다. 단순한 숫자, 문자와 같은 기본형(primitive) 데이터는 Arrays.sort() 메서드를 이용하여 알아서 정렬할 수 있다. 하지만, 특정 타입의 객체는 정렬

sa11k.tistory.com

문제 자체가 정렬 문제였기 때문에 해당 부분을 잘 이해하고 코드를 작성하니 어렵지 않게 코드를 작성할 수 있었다.

 

코드

import java.io.*;
import java.util.*;

class Main{
    public static void main(String[] args) throws Exception {
        BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
        int N = Integer.parseInt(br.readLine());
        String[] word = new String[N];

        for(int i = 0; i<N; i++){
            word[i] = br.readLine();	// 단어 입력 받기
        }
		
        // 단어 정렬(comparator 이용)
        Arrays.sort(word, 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();
                }
            }
        });

	// 반복되는 단어를 출력하지 않기 위해 아래와 같은 방법으로 출력
        System.out.println(word[0]);

        for(int i = 1; i<N; i++){
            if(!(word[i].equals(word[i-1]))){
                System.out.println(word[i]);
            }
        }

        br.close();
    }
}
728x90
댓글
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday