๐ ๋ฐฑ์ค 1181 ๋ฌธ์ https://www.acmicpc.net/problem/1181
๋ฌธ์
์ํ๋ฒณ ์๋ฌธ์๋ก ์ด๋ฃจ์ด์ง N๊ฐ์ ๋จ์ด๊ฐ ๋ค์ด์ค๋ฉด ์๋์ ๊ฐ์ ์กฐ๊ฑด์ ๋ฐ๋ผ ์ ๋ ฌํ๋ ํ๋ก๊ทธ๋จ์ ์์ฑํ์์ค.
- ๊ธธ์ด๊ฐ ์งง์ ๊ฒ๋ถํฐ
- ๊ธธ์ด๊ฐ ๊ฐ์ผ๋ฉด ์ฌ์ ์์ผ๋ก
์ ๋ ฅ
์ฒซ์งธ ์ค์ ๋จ์ด์ ๊ฐ์ N์ด ์ฃผ์ด์ง๋ค. (1 โค N โค 20,000) ๋์งธ ์ค๋ถํฐ N๊ฐ์ ์ค์ ๊ฑธ์ณ ์ํ๋ฒณ ์๋ฌธ์๋ก ์ด๋ฃจ์ด์ง ๋จ์ด๊ฐ ํ ์ค์ ํ๋์ฉ ์ฃผ์ด์ง๋ค. ์ฃผ์ด์ง๋ ๋ฌธ์์ด์ ๊ธธ์ด๋ 50์ ๋์ง ์๋๋ค.
์ถ๋ ฅ
์กฐ๊ฑด์ ๋ฐ๋ผ ์ ๋ ฌํ์ฌ ๋จ์ด๋ค์ ์ถ๋ ฅํ๋ค. ๋จ, ๊ฐ์ ๋จ์ด๊ฐ ์ฌ๋ฌ ๋ฒ ์ ๋ ฅ๋ ๊ฒฝ์ฐ์๋ ํ ๋ฒ์ฉ๋ง ์ถ๋ ฅํ๋ค.
ํ์ด
์ ๋ ฌ ์กฐ๊ฑด์ด ๋๊ฐ์ง๊ฐ ์กด์ฌํ๋ค.
๊ธธ์ด๊ฐ ์งง์ ๊ฒ๋ถํฐ
๊ธธ์ด๊ฐ ๊ฐ์ผ๋ฉด ์ฌ์ ์์ผ๋ก
๊ทธ๋ ๊ธฐ์ ๋๋ ์ ๋ ฅ ๋ค์ด์จ ๋จ์ด๋ค์ ๋ณ์์ ํ ๋นํ ๋, ๋จ์ด์ ๋จ์ด์ ๊ธธ์ด๊ฐ ํจ๊ป ํ ๋นํ๋ฉด ์ข๊ฒ ๋ค๋ ์๊ฐ์ด ๋ค์ด Hashmap์ ํ์ฉํ์๋ค.
for๋ฌธ์ ๋๋ฆฌ๋ฉฐ Hashmap์ ๋จ์ด(key)์ ๋จ์ด์ ๊ธธ์ด(value)๋ฅผ ์ ์ฅํ ๋, ์ค๋ณต๋๋ ๋จ์ด(key)๊ฐ ์๋ ๊ฒฝ์ฐ๋ฅผ ์๊ฐํ์ฌ ๋๊ฐ์ง ํด๊ฒฐ์ฑ ์ ์ฌ์ฉํ์๋ค.
if๋ฌธ์ ์ฌ์ฉํ์ฌ ์ค๋ณต ํค๊ฐ ์กด์ฌํ๋ค๋ฉด ๋ค์ ๋ฐ๋ณต๋ฌธ์ผ๋ก ๋๊ฒจ์ฃผ์ด ์๊ฐ์ ๋จ์ถ์์ผ์ฃผ์๋ค.
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();
}
}