๐ [๋ฐฑ์ค์๊ณ ๋ฆฌ์ฆ ํ์ด] Q.1316 ๊ทธ๋ฃน ๋จ์ด ์ฒด์ปค ๋ฌธ์ ํ์ด
๐ ๋ฌธ์
https://www.acmicpc.net/problem/1316
๊ทธ๋ฃน ๋จ์ด๋ ๋จ์ด์ ์กด์ฌํ๋ ๋ชจ๋ ๋ฌธ์์ ๋ํด์, ๊ฐ ๋ฌธ์๊ฐ ์ฐ์ํด์ ๋ํ๋๋ ๊ฒฝ์ฐ๋ง์ ๋งํ๋ค.
์๋ฅผ ๋ค๋ฉด, ccazzzzbb๋ c, a, z, b๊ฐ ๋ชจ๋ ์ฐ์ํด์ ๋ํ๋๊ณ , kin๋ k, i, n์ด ์ฐ์ํด์ ๋ํ๋๊ธฐ ๋๋ฌธ์ ๊ทธ๋ฃน ๋จ์ด์ด์ง๋ง,
aabbbccb๋ b๊ฐ ๋จ์ด์ ธ์ ๋ํ๋๊ธฐ ๋๋ฌธ์ ๊ทธ๋ฃน ๋จ์ด๊ฐ ์๋๋ค.
๋จ์ด N๊ฐ๋ฅผ ์ ๋ ฅ์ผ๋ก ๋ฐ์ ๊ทธ๋ฃน ๋จ์ด์ ๊ฐ์๋ฅผ ์ถ๋ ฅํ๋ ํ๋ก๊ทธ๋จ์ ์์ฑํ์์ค.
์ ๋ ฅ
์ฒซ์งธ ์ค์ ๋จ์ด์ ๊ฐ์ N์ด ๋ค์ด์จ๋ค. N์ 100๋ณด๋ค ์๊ฑฐ๋ ๊ฐ์ ์์ฐ์์ด๋ค. ๋์งธ ์ค๋ถํฐ N๊ฐ์ ์ค์ ๋จ์ด๊ฐ ๋ค์ด์จ๋ค.
๋จ์ด๋ ์ํ๋ฒณ ์๋ฌธ์๋ก๋ง ๋์ด์๊ณ ์ค๋ณต๋์ง ์์ผ๋ฉฐ, ๊ธธ์ด๋ ์ต๋ 100์ด๋ค.
์ถ๋ ฅ
์ฒซ์งธ ์ค์ ๊ทธ๋ฃน ๋จ์ด์ ๊ฐ์๋ฅผ ์ถ๋ ฅํ๋ค.
๐ ์ ๊ทผ๋ฒ
Q.1316 ๊ทธ๋ฃน ๋จ์ด ์ฒด์ปค ๋ฌธ์ ํ์ด์ ๋๋ค.
๋ฌธ์ ์์ ์ฃผ์ด์ง ์์์ฒ๋ผ ๋จ์ด์์ ์กด์ฌํ๋ ๋ชจ๋ ๋ฌธ์์ ๋ํด ๊ฐ ๋ฌธ์๊ฐ ์ฐ์ํด์
๋ํ๋๋ ๊ฒฝ์ฐ๋ง์ ๋ปํฉ๋๋ค.
์ฐ์๋ ๋ฌธ์๋ค์ด ๊ทธ๋ฃน์ผ๋ก ์กด์ฌํด์ผ ํ๊ณ ๋ฐ๋ก ์กด์ฌํด์๋ ์ ๋ฉ๋๋ค.
Set์ ์ด์ฉํด ๋ฌธ์ ๋ฅผ ํ์์ต๋๋ค.
Set์ ์ด์ฉํด ์ฐ์ ํ ๋ฒ๋ ๋์ค์ง ์๋ ๋ฌธ์๋ผ๋ฉด
๊ทธ๋๋ก ๋ฃ์ด์ฃผ๊ณ
ํ์ฌ ๋ฌธ์๊ฐ
์ด๋ฏธ Set์ ์กด์ฌํ๋ ๋ฌธ์๋ผ๋ฉด ๋ฐ๋ก ์์ ์๋ (i-1)๋ฒ์งธ์ ๋ฌธ์๋ฅผ ํ์ธํฉ๋๋ค.
๋ง์ฝ ๋ค๋ฅธ ๋ฌธ์๋ผ๋ฉด ํ์ฌ ๋ฌธ์๊ฐ ์ด๋ฏธ ์ ๊ทธ๋ฃน์ ์กด์ฌํ๋ ๊ฒ์ ๋๋ค.
๊ทธ๋ฌ๋ฏ๋ก ์ฐ์๋์ง ์๋ ๋ฌธ์์ด๋ฏ๋ก ๊ทธ๋ฃน ๋จ์ด๊ฐ ์๋๊ฒ ๋ฉ๋๋ค.
์ด๋ฌํ ๊ณผ์ ์ ํตํด ๊ทธ๋ฃน ๋จ์ด์ ๊ฐ์๊ฐ ๋ช ๊ฐ์ธ์ง๋ฅผ ์์๋ผ ์ ์์ต๋๋ค.
๐ป ์ฝ๋
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));
}
}
}