๐ [๋ฐฑ์ค์๊ณ ๋ฆฌ์ฆ ํ์ด] 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));
}
}
}