https://www.acmicpc.net/problem/5052
์ฝ๋
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.Arrays;
public class Main {
public static void main(String[] args) throws IOException {
BufferedReader bf = new BufferedReader(new InputStreamReader(System.in));
int t = Integer.parseInt(bf.readLine()); // ํ
์คํธ ์ผ์ด์ค ์
for(int tc=0; tc<t; tc++) {
int n = Integer.parseInt(bf.readLine()); // ์ ํ๋ฒํธ ์
String[] phones = new String[n]; // ์ ํ๋ฒํธ ๋ชฉ๋ก
String result = "YES"; // ๊ฒฐ๊ณผ ์ถ๋ ฅ
for(int i=0; i<n; i++)
phones[i] = bf.readLine();
Arrays.sort(phones);
for(int i=0; i<n-1; i++) {
// ํ ๋ฒํธ๊ฐ ๋ค๋ฅธ ๋ฒํธ์ ์ ๋์ด ์ธ ๊ฒฝ์ฐ
if(phones[i+1].startsWith(phones[i])) {
result = "NO";
break;
}
}
System.out.println(result);
}
bf.close();
}
}
ํ์ด
๊ธฐ์กด ํ๋ก๊ทธ๋๋จธ์ค์ ๋์ผํ ๋ฌธ์ ๋ค.
ํ๋ก๊ทธ๋๋จธ์ค - ์ ํ๋ฒํธ ๋ชฉ๋ก
ํ์ง๋ง ํ๋ก๊ทธ๋๋จธ์ค์์ ํ์๋ ์ฝ๋์ฒ๋ผ ๋ชจ๋ ์ ํ๋ฒํธ ๋ชฉ๋ก์ ๋ํด ์์ ํ์ O(n^2) ์ผ๋ก ํด๊ฒฐํ๋ฉด, ์๊ฐ์ด๊ณผ๊ฐ ๋ฐ์ํ๋๋ฐ, ์ด ๋ฌธ์ ์์๋ ํ ์คํธ์ผ์ด์ค๊ฐ ํฌํจ๋๊ธฐ ๋๋ฌธ์ด๋ค.
ํ ์คํธ์ผ์ด์ค๋ 50, ์ ํ๋ฒํธ ์๋ 10,000 ์ด๋ฏ๋ก O(50*10000*10000) ์ผ๋ก ์๊ฐ ์ด๊ณผ๊ฐ ๋ฐ์ํ๋ค.
๊ทธ๋ผ ์๊ฐ ์ด๊ณผ๋ฅผ ํด๊ฒฐํด์ผ ํ๋๋ฐ, ์ด ๋ฌธ์ ๋ ์ ๋ ฌ์ ํตํด ํด๊ฒฐํ ์ ์๋ค.
์ ํ๋ฒํธ๊ฐ 123, 12, 1234 ๋ผ๋ฉด ์ ๋ ฌ์ ํ๋ฉด 12, 123, 1234 ์ ๊ฐ์ด ๋๋ค.
๊ทธ๋ผ ๋ชจ๋ ์ ํ๋ฒํธ๋ฅผ ๊ฒ์ฌํ ํ์์์ด ์ด์ ์ ๋ฒํธ์ ์ ๋์ด ๊ด๊ณ์ธ์ง๋ง ํ์ ํ๋ฉด ๋๋ค.
๋ํ ์ ํ๋ฒํธ ๋ชฉ๋ก์, ํ๋๋ผ๋ ์ ๋์ด ๊ด๊ณ๊ฐ ์๋ ๋ฒํธ๋ผ๋ฉด, ๋ค๋ฅธ ์ ํ๋ฒํธ๋ ํ์ธํ ํ์๊ฐ ์๋ค.
๋ฐ๋ผ์ ์ ๋์ด๋ฅผ ํ์ธํ์ ๊ฒฝ์ฐ, break๋ฅผ ํตํด ํ์ถํจ์ผ๋ก์จ ์๊ฐ์ ์ข ๋ ์ค์ผ ์ ์๋ค.
* ์ด ๋ฌธ์ ๋ ํธ๋ผ์ด(Trie) ์๋ฃ๊ตฌ์กฐ์ ๋ฌธ์ ๋ผ๊ณ ํ๋ค. ํธ๋ผ์ด๋ ๋ฌธ์์ด์์์ ๊ฒ์์ ๋น ๋ฅด๊ฒ ํด์ฃผ๋ ์๋ฃ๊ตฌ์กฐ ์ด๋ค.
ํธ๋ผ์ด ์๋ฃ๊ตฌ์กฐ๋ ?
https://jason9319.tistory.com/129
'Algorithm' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
ํ๋ก๊ทธ๋๋จธ์ค[Java] - ์์ ์ฐพ๊ธฐ (0) | 2020.03.07 |
---|---|
ํ๋ก๊ทธ๋๋จธ์ค[Java] - ๋ฌธ์์ด ๋ค๋ฃจ๊ธฐ ๊ธฐ๋ณธ (0) | 2020.03.07 |
[Codeforces] 431A: Black Square (0) | 2020.03.07 |
ํ๋ก๊ทธ๋๋จธ์ค[Java] - ์์ฅ(ํด์) (0) | 2020.03.06 |
[๋ฐฑ์ค] 1062๋ฒ: ๊ฐ๋ฅด์นจ(์์ ํ์, ๋ฐฑํธ๋ํน) (0) | 2020.03.06 |
๋๊ธ