Home [BaekJoon] 1181 ๋‹จ์–ด ์ •๋ ฌ JAVA
Post
Cancel

[BaekJoon] 1181 ๋‹จ์–ด ์ •๋ ฌ JAVA

๐Ÿ”— ๋ฐฑ์ค€ 1181 ๋ฌธ์ œ https://www.acmicpc.net/problem/1181

๋ฌธ์ œ

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

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

์ž…๋ ฅ

์ฒซ์งธ ์ค„์— ๋‹จ์–ด์˜ ๊ฐœ์ˆ˜ N์ด ์ฃผ์–ด์ง„๋‹ค. (1 โ‰ค N โ‰ค 20,000) ๋‘˜์งธ ์ค„๋ถ€ํ„ฐ N๊ฐœ์˜ ์ค„์— ๊ฑธ์ณ ์•ŒํŒŒ๋ฒณ ์†Œ๋ฌธ์ž๋กœ ์ด๋ฃจ์–ด์ง„ ๋‹จ์–ด๊ฐ€ ํ•œ ์ค„์— ํ•˜๋‚˜์”ฉ ์ฃผ์–ด์ง„๋‹ค. ์ฃผ์–ด์ง€๋Š” ๋ฌธ์ž์—ด์˜ ๊ธธ์ด๋Š” 50์„ ๋„˜์ง€ ์•Š๋Š”๋‹ค.


์ถœ๋ ฅ

์กฐ๊ฑด์— ๋”ฐ๋ผ ์ •๋ ฌํ•˜์—ฌ ๋‹จ์–ด๋“ค์„ ์ถœ๋ ฅํ•œ๋‹ค. ๋‹จ, ๊ฐ™์€ ๋‹จ์–ด๊ฐ€ ์—ฌ๋Ÿฌ ๋ฒˆ ์ž…๋ ฅ๋œ ๊ฒฝ์šฐ์—๋Š” ํ•œ ๋ฒˆ์”ฉ๋งŒ ์ถœ๋ ฅํ•œ๋‹ค.


ํ’€์ด

์ •๋ ฌ ์กฐ๊ฑด์ด ๋‘๊ฐ€์ง€๊ฐ€ ์กด์žฌํ•œ๋‹ค.

  1. ๊ธธ์ด๊ฐ€ ์งง์€ ๊ฒƒ๋ถ€ํ„ฐ

  2. ๊ธธ์ด๊ฐ€ ๊ฐ™์œผ๋ฉด ์‚ฌ์ „ ์ˆœ์œผ๋กœ

๊ทธ๋ ‡๊ธฐ์— ๋‚˜๋Š” ์ž…๋ ฅ ๋“ค์–ด์˜จ ๋‹จ์–ด๋“ค์„ ๋ณ€์ˆ˜์— ํ• ๋‹นํ•  ๋•Œ, ๋‹จ์–ด์™€ ๋‹จ์–ด์˜ ๊ธธ์ด๊ฐ€ ํ•จ๊ป˜ ํ• ๋‹นํ•˜๋ฉด ์ข‹๊ฒ ๋‹ค๋Š” ์ƒ๊ฐ์ด ๋“ค์–ด Hashmap์„ ํ™œ์šฉํ•˜์˜€๋‹ค.

for๋ฌธ์„ ๋Œ๋ฆฌ๋ฉฐ Hashmap์— ๋‹จ์–ด(key)์™€ ๋‹จ์–ด์˜ ๊ธธ์ด(value)๋ฅผ ์ €์žฅํ•  ๋•Œ, ์ค‘๋ณต๋˜๋Š” ๋‹จ์–ด(key)๊ฐ€ ์žˆ๋Š” ๊ฒฝ์šฐ๋ฅผ ์ƒ๊ฐํ•˜์—ฌ ๋‘๊ฐ€์ง€ ํ•ด๊ฒฐ์ฑ…์„ ์‚ฌ์šฉํ•˜์˜€๋‹ค.

  1. if๋ฌธ์„ ์‚ฌ์šฉํ•˜์—ฌ ์ค‘๋ณต ํ‚ค๊ฐ€ ์กด์žฌํ•œ๋‹ค๋ฉด ๋‹ค์Œ ๋ฐ˜๋ณต๋ฌธ์œผ๋กœ ๋„˜๊ฒจ์ฃผ์–ด ์‹œ๊ฐ„์„ ๋‹จ์ถ•์‹œ์ผœ์ฃผ์—ˆ๋‹ค.

  2. getOrDefault ๋ฉ”์„œ๋“œ๋ฅผ ์‚ฌ์šฉํ•˜์˜€๋‹ค.

getOrDefault : ์ฐพ๋Š” ํ‚ค๊ฐ€ ์กด์žฌํ•œ๋‹ค๋ฉด ํ•ด๋‹น ํ‚ค์˜ ๊ฐ’์„ ๋ฐ˜ํ™˜, ์—†๋‹ค๋ฉด ์ง€์ •ํ•ด์ค€ default๊ฐ’์„ ๋ฐ˜ํ™˜์‹œํ‚จ๋‹ค.

๊ทธ ํ›„ hashmap์— ์ €์žฅ๋œ ํ‚ค์™€ ๊ฐ’์„ entry๋กœ ๊ฐ€์ ธ์™€ ๋ฆฌ์ŠคํŠธํ˜•ํƒœ๋กœ ์ €์žฅํ•˜์˜€๋‹ค.

Entry ๋ฉ”์„œ๋“œ์ธ comparingByKey/comparingByValue๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ๊ฐ ์‚ฌ์ „์ˆœ ์ •๋ ฌ๊ณผ ๊ธธ์ด์ˆœ ์ •๋ ฌ์„ ํ•ด์ฃผ์—ˆ๋‹ค.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
import java.io.*;
import java.util.*;
import java.util.Map.Entry;

public class Main {
    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 word = br.readLine();

        Map<String, Integer> words = new HashMap<>();
        words.put(word, word.length());

        for (int i = 0; i < n-1; i++) {
            word = br.readLine();
            if (words.containsKey(word)) continue;
            words.put(word, words.getOrDefault(word, word.length()));
        }

        List<Entry<String, Integer>> entryList = new ArrayList<>(words.entrySet());
        entryList.sort(Entry.comparingByKey()); // ์‚ฌ์ „ ์ˆœ ์ •๋ ฌ
        entryList.sort(Entry.comparingByValue()); // ๊ธธ์ด ์ˆœ ์ •๋ ฌ

        for (Entry<String, Integer> entry : entryList) bw.write(entry.getKey() + "\n");

        bw.close();
    }
}
This post is licensed under CC BY 4.0 by the author.

[Java] ๋น„ํŠธ์—ฐ์‚ฐ์ž

[BaekJoon] 1018 ์ฒด์ŠคํŒ ๋‹ค์‹œ ์น ํ•˜๊ธฐ JAVA