๐Ÿ“– [๋ฐฑ์ค€์•Œ๊ณ ๋ฆฌ์ฆ˜ ํ’€์ด] Q.1181 ๋‹จ์–ด ์ •๋ ฌ ๋ฌธ์ œ ํ’€์ด

๐Ÿ“– ๋ฌธ์ œ

https://www.acmicpc.net/problem/1783

์•ŒํŒŒ๋ฒณ ์†Œ๋ฌธ์ž๋กœ ์ด๋ฃจ์–ด์ง„ N๊ฐœ์˜ ๋‹จ์–ด๊ฐ€ ๋“ค์–ด์˜ค๋ฉด ์•„๋ž˜์™€ ๊ฐ™์€ ์กฐ๊ฑด์— ๋”ฐ๋ผ ์ •๋ ฌํ•˜๋Š” ํ”„๋กœ๊ทธ๋žจ์„ ์ž‘์„ฑํ•˜์‹œ์˜ค.

1.๊ธธ์ด๊ฐ€ ์งง์€ ๊ฒƒ๋ถ€ํ„ฐ
2.๊ธธ์ด๊ฐ€ ๊ฐ™์œผ๋ฉด ์‚ฌ์ „ ์ˆœ์œผ๋กœ

๐Ÿ” ์ ‘๊ทผ๋ฒ•

Q.1181 ๋‹จ์–ด ์ •๋ ฌ ๋ฌธ์ œ ํ’€์ด

๋ฌธ์ œ ์ด๋ฆ„ ๊ทธ๋Œ€๋กœ ์ฃผ์–ด์ง„ ๋‹จ์–ด๋“ค์„ ์ •๋ ฌํ•˜๋Š” ๋ฌธ์ œ์ž…๋‹ˆ๋‹ค.

๋ฌธ์ž์—ด ๋‹ค๋ฃจ๊ธฐ + ์ •๋ ฌ ์œ ํ˜•์˜ ๋ฌธ์ œ์ž…๋‹ˆ๋‹ค.

์šฐ์„  ์ถœ๋ ฅ ์กฐ๊ฑด์— ๊ฐ™์€ ๋‹จ์–ด๊ฐ€ ์žˆ๋‹ค๋ฉด 1๋ฒˆ๋งŒ ์ถœ๋ ฅํ•˜๋ผ๊ณ  ๋˜์–ด์žˆ๊ธฐ ๋•Œ๋ฌธ์—

input์—์„œ ๋‹จ์–ด๋“ค์„ ์ž…๋ ฅ๋ฐ›์„ ๋•Œ Set์„ ์ด์šฉํ•ด์„œ ๋‹ด์Šต๋‹ˆ๋‹ค.

Set์„ ์ด์šฉํ•ด ์ค‘๋ณต์„ ์ œ๊ฑฐํ•œ ๋‹จ์–ด ๋ชฉ๋ก๋“ค์„ List์— ๋‹ด์Šต๋‹ˆ๋‹ค.

๋‹จ์–ด ๋ชฉ๋ก์„ List์— ๋‹ด๊ณ  Comparator๋ฅผ ์ด์šฉํ•ด

์ฃผ์–ด์ง„ ์กฐ๊ฑด๋Œ€๋กœ ๊ธธ์ด๊ฐ€ ์งง์€ ๊ฒƒ๋ถ€ํ„ฐ ๋จผ์ € ์ •๋ ฌ๋˜๋„๋ก ํ•˜๊ณ 

๊ธธ์ด๊ฐ€ ๊ฐ™๋‹ค๋ฉด String ํด๋ž˜์Šค์˜ compareTo๋ฅผ ์ด์šฉํ•ด ์‚ฌ์ „ ์ˆœ์œผ๋กœ ๋ฐฐ์น˜ํ•˜๋„๋ก ํ•˜๋ฉด ๋ฉ๋‹ˆ๋‹ค.

Set๊ณผ Comparator๋ฅผ ์ด์šฉํ•ด

๋‹ต์„ ๋„์ถœํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

๐Ÿ’ป ์ฝ”๋“œ

package problem.string;

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.*;

public class Main_1181 {

    static int N;
    static List<String> wordList;

    public static void main(String[] args) throws IOException {
        input();
        solve();
    }

    public static void input() throws IOException {
        BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
        N = Integer.parseInt(br.readLine());
        Set<String> wordSet = new HashSet();
        for (int i = 0; i < N; i++) {
            wordSet.add(br.readLine());
        }
        wordList = new ArrayList<>(wordSet);
        br.close();
    }

    public static void solve() {
        Collections.sort(wordList, new Comparator<String>() {
            @Override
            public int compare(String s1, String s2) {
                if (s1.length() > s2.length()) {
                    return 1;
                } else if (s1.length() == s2.length()) {
                    return s1.compareTo(s2);
                } else
                    return -1;
            }
        });

        for (int i = 0; i < wordList.size(); i++) {
            System.out.println(wordList.get(i));
        }
    }
}
Written on February 4, 2021