๐Ÿ“– [๋ฐฑ์ค€์•Œ๊ณ ๋ฆฌ์ฆ˜ ํ’€์ด] Q.1764 ๋“ฃ๋ณด์žก ๋ฌธ์ œ ํ’€์ด

๐Ÿ“– ๋ฌธ์ œ

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

๊น€์ง„์˜์ด ๋“ฃ๋„ ๋ชปํ•œ ์‚ฌ๋žŒ์˜ ๋ช…๋‹จ๊ณผ, ๋ณด๋„ ๋ชปํ•œ ์‚ฌ๋žŒ์˜ ๋ช…๋‹จ์ด ์ฃผ์–ด์งˆ ๋•Œ, ๋“ฃ๋„ ๋ณด๋„ ๋ชปํ•œ ์‚ฌ๋žŒ์˜ ๋ช…๋‹จ์„ ๊ตฌํ•˜๋Š” ํ”„๋กœ๊ทธ๋žจ์„ ์ž‘์„ฑํ•˜์‹œ์˜ค.

์ž…๋ ฅ

์ฒซ์งธ ์ค„์— ๋“ฃ๋„ ๋ชปํ•œ ์‚ฌ๋žŒ์˜ ์ˆ˜ N, ๋ณด๋„ ๋ชปํ•œ ์‚ฌ๋žŒ์˜ ์ˆ˜ M์ด ์ฃผ์–ด์ง„๋‹ค.

์ด์–ด์„œ ๋‘˜์งธ ์ค„๋ถ€ํ„ฐ N๊ฐœ์˜ ์ค„์— ๊ฑธ์ณ ๋“ฃ๋„ ๋ชปํ•œ ์‚ฌ๋žŒ์˜ ์ด๋ฆ„๊ณผ, N+2์งธ ์ค„๋ถ€ํ„ฐ ๋ณด๋„ ๋ชปํ•œ ์‚ฌ๋žŒ์˜ ์ด๋ฆ„์ด ์ˆœ์„œ๋Œ€๋กœ ์ฃผ์–ด์ง„๋‹ค.

์ด๋ฆ„์€ ๋„์–ด์“ฐ๊ธฐ ์—†์ด ์˜์–ด ์†Œ๋ฌธ์ž๋กœ๋งŒ ์ด๋ฃจ์–ด์ง€๋ฉฐ, ๊ทธ ๊ธธ์ด๋Š” 20 ์ดํ•˜์ด๋‹ค. N, M์€ 500,000 ์ดํ•˜์˜ ์ž์—ฐ์ˆ˜์ด๋‹ค.

โ€ป ๋“ฃ๋„ ๋ชปํ•œ ์‚ฌ๋žŒ์˜ ๋ช…๋‹จ์—๋Š” ์ค‘๋ณต๋˜๋Š” ์ด๋ฆ„์ด ์—†์œผ๋ฉฐ, ๋ณด๋„ ๋ชปํ•œ ์‚ฌ๋žŒ์˜ ๋ช…๋‹จ๋„ ๋งˆ์ฐฌ๊ฐ€์ง€์ด๋‹ค.

์ถœ๋ ฅ

๋“ฃ๋ณด์žก์˜ ์ˆ˜์™€ ๊ทธ ๋ช…๋‹จ์„ ์‚ฌ์ „์ˆœ์œผ๋กœ ์ถœ๋ ฅํ•œ๋‹ค.

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

Q.1764 ๋“ฃ๋ณด์žก ๋ฌธ์ œ ํ’€์ด์ž…๋‹ˆ๋‹ค.

๋ฌธ์ œ์—์„œ ์ฃผ์–ด์ง„ ์˜ˆ์‹œ์ฒ˜๋Ÿผ

์ž…๋ ฅ์œผ๋กœ ๋“ฃ๋„ ๋ชปํ•œ ์‚ฌ๋žŒ์˜ ์ด๋ฆ„ N๊ฐœ

๋ณด๋„ ๋ชปํ•œ ์‚ฌ๋žŒ์˜ ์ด๋ฆ„ M๊ฐœ๊ฐ€ ์ฃผ์–ด์ง‘๋‹ˆ๋‹ค.

์—ฌ๊ธฐ์„œ ๋“ฃ๋„ ๋ณด๋„ ๋ชปํ•œ ์‚ฌ๋žŒ์˜ ์ด๋ฆ„์˜ ์ˆ˜์™€

ํ•ด๋‹น ์‚ฌ๋žŒ์˜ ์ด๋ฆ„์„ ์‚ฌ์ „ ์ˆœ์œผ๋กœ ์ •๋ ฌํ•˜์—ฌ ์ถœ๋ ฅํ•˜๋Š” ๊ฒƒ์ด ์ •๋‹ต์ž…๋‹ˆ๋‹ค.

๊ฑฐ๊ธฐ๋‹ค ์ž…๋ ฅ์—์„œ ๋“ฃ๋„ ๋ชปํ•œ ์‚ฌ๋žŒ์˜ ๋ช…๋‹จ๊ณผ ๋ณด๋„ ๋ชปํ•œ ์‚ฌ๋žŒ์˜ ๋ช…๋‹จ์€ ์ค‘๋ณต์ด ๋˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค.

๊ทธ๋Ÿฌ๋ฏ€๋กœ ๊ทธ๋ƒฅ N+M ๊ฐœ์˜ ์ด๋ฆ„๋“ค์„ ์ž…๋ ฅ๋ฐ›๊ณ 

๋‘ ๋ฒˆ ์ž…๋ ฅ๋œ ์ด๋ฆ„๋“ค์„ answerList์— ์ถ”๊ฐ€ํ•ด์ฃผ๋ฉด ๋ฉ๋‹ˆ๋‹ค.

์—ฌ๊ธฐ์„œ ๋‘ ๋ฒˆ ์ž…๋ ฅ๋œ ์ด๋ฆ„๋“ค์„ ์‰ฝ๊ฒŒ ํŒ๋ณ„ํ•˜๊ธฐ ์œ„ํ•ด

Set์„ ์ด์šฉํ–ˆ์Šต๋‹ˆ๋‹ค.

Set์— ์กด์žฌํ•˜์ง€ ์•Š๋Š” ์ด๋ฆ„์ด๋ผ๋ฉด ์ฒ˜์Œ ๋‚˜์˜จ ์ด๋ฆ„์ด๋ฏ€๋กœ set์— ์ถ”๊ฐ€ํ•ด์ฃผ๊ณ 

๋งŒ์•ฝ ์ด๋ฏธ set์— ์กด์žฌํ•˜๋Š” ์ด๋ฆ„์ด๋ผ๋ฉด ๋‘ ๋ฒˆ์งธ ๋‚˜์˜จ ์ด๋ฆ„์ด๋ฏ€๋กœ

answerList์— ์ถ”๊ฐ€ํ•ด์ค๋‹ˆ๋‹ค.

๊ทธ ํ›„ answerList์˜ ํฌ๊ธฐ(์ˆ˜)์™€ ์‚ฌ์ „ ์ˆœ์œผ๋กœ ์ •๋ ฌ๋œ answerList๋ฅผ ์ถœ๋ ฅํ•ด์ฃผ๋ฉด ๋์ž…๋‹ˆ๋‹ค.

๐Ÿ’ป ์ฝ”๋“œ

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 10, 2021