백준 1181 - 단어 정렬

Updated:

Java

1181 번 - 단어 정렬

문제

접근 방법

문제 조건에

  1. 중복 단어 제거
  2. 길이 순 정렬
  3. 길이가 같으면 사전 순 정렬

을 하라고 되어있다.

중복 단어는 Set으로 해결하며, List로 변환 후 Collecions.sort()으로 정렬하여 해결한다.

코드

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

public class Main {
	static int n, result;
	public static void main(String[] args) throws IOException {
		BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
    	n = stoi(br.readLine());

    	Set<String> set = new HashSet<String>();		// 중복 제거를 위해 SET 사용
    	for(int i = 0; i < n; i++) {
    		set.add(br.readLine());
    	}

    	List<String> word = new ArrayList<>(set);

    	Collections.sort(word, (o1, o2)->{
    		int comp = Integer.compare(o1.length(), o2.length());	// 길이 순 정렬
    		if(comp == 0) {			// 길이가 같으면 사전 순 정렬
    			return o1.compareTo(o2);
    		}
    		return comp;
    	});

    	for(int i = 0; i < word.size(); i++)
    		System.out.println(word.get(i));

    	br.close();
	}

	static int stoi(String str) {
    	return Integer.parseInt(str);
    }
}

총평

후기

Set을 List로 변환하는 걸 생각해본 문제

개선할 점