๋ฌธ์
ํด๋น ํฌ์คํ ์ ๋ฐฑ์ค์ 11656๋ฒ ์ ๋ฏธ์ฌ ๋ฐฐ์ด ์ ์ ๊ทผ๊ณผ ํด๊ฒฐ ๋ฐฉ๋ฒ์ ์ค๋ช ํ ๊ธ ์ ๋๋ค.
์ ๋ต ์์ค ์ฝ๋๋ฅผ ํ์ธํ์๋ ค๋ฉด solve url ์์ ํ์ธ ๊ฐ๋ฅํฉ๋๋ค.
์ด ๋ฌธ์ ๋ฅผ ํด๊ฒฐํ๊ธฐ ์ํด ์ด๋ค ๋ฐฉ์์ผ๋ก ์ ๊ทผํด์ผ ํ๋์ง๋ฅผ ๋จผ์ ์๊ฐํด๋ณด์.
ํด๊ฒฐ๋ฒ
๋ฌธ์ ๋ถ์์ ํด๋ณด์.
์ฐ์ ๋ฌธ์์ด ๊ธธ์ด๊ฐ n์ธ ๋ฌธ์๊ฐ ๋ค์ด์จ๋ค.
๊ทธ๋ฆฌ๊ณ ์ฐ๋ฆฌ๋ ๊ทธ ๋ฌธ์์ด์ ๊ธธ์ด๊ฐ n-1, n-2 ... 1
์ด ๋ ๋ ๊น์ง ๋ฐ๋ณตํด์ ๋ฌธ์์ด์ ๋๋๊ณ ํด๋น ๋ฌธ์ ๋ฐฐ์ด์ ์ ๋ ฌํ๋ฉด ๋๋ค.
์๊ฐ ๋ณต์ก๋
ํน์ ๋ชจ๋ฅด๋ ์๊ฐ ๋ณต์ก๋๋ฅผ ๊ณ์ฐ ํด๋ณด์.
์ผ๋จ ๋ฌธ์์ด์ ๊ธธ์ด๊ฐ ์ด๋ฒ ๋ฐ๋ณต์ ์ฃผ์ฒด์ธ n์ด ๋ ๊ฒ์ด๋ฏ๋ก n์ ์ต๋ 1,000์ด๋ค.
๋ํ ์ฐ๋ฆฌ๋ java์ ํฌํจ๋ ์ ๋ ฌ ์๊ณ ๋ฆฌ์ฆ์ ์ฌ์ฉํ ๊ฒ์ธ๋ฐ, java ์ ๋ ฌ ์๊ณ ๋ฆฌ์ฆ์ Object์ธ ๊ฒฝ์ฐ TimSort๋ฅผ ์ํํ๋ค.
TimSort์ ์๊ฐ๋ณต์ก๋๋ ํ๊ท O(n log n)
์ด๊ณ ์ต์
์ ๊ฒฝ์ฐ O(n^2)
์ด๋ฏ๋ก ์ต์
์ ๊ฒฝ์ฐ ์ฐ๋ฆฌ์ ์
๋ ฅ์๋ 1,000,000 ๋ฒ ์ดํ์ ๋ฐ๋ณต์ ์ํํ ์ ์๋ค.
์๊ฐ ์ ํ์ด 1์ด์ด๋ฏ๋ก ์ถฉ๋ถํ ํด๊ฒฐ ๊ฐ๋ฅํ ์์ค์ด๋ ์ฐ๋ฆฌ์ ํ์ด์์ ์๊ฐ ๋ณต์ก๋๋ ๋ฌธ์ ๊ฐ ๋์ง ์์ ๊ฒ์ผ๋ก ๋ณด์ธ๋ค.
์ ๋ต ์ฝ๋
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));
String[] s = br.readLine().split("");
String[] answer = new String[s.length];
for(int i = 0; i < s.length; i++) {
StringBuilder sb = new StringBuilder();
for(int j = i; j < s.length; j++) {
sb.append(s[j]);
}
answer[i] = sb.toString();
}
Arrays.sort(answer);
for(String str : answer) {
bw.write(str + "\n");
}
bw.flush();
bw.close();
}
}
๊ทธ๋ฆฌ๊ณ ์ฐ์ต์ผ์ Comparator
์ ์ด์ฉํด ์ ๋ ฌ ๊ธฐ์ค ์ฌ์ ์๋ก ์ ๋ ฌ์ ํด๋ณผ ์ ์๋ค.
import java.io.*;
import java.util.Arrays;
import java.util.Comparator;
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));
String[] s = br.readLine().split("");
String[] answer = new String[s.length];
for(int i = 0; i < s.length; i++) {
StringBuilder sb = new StringBuilder();
for(int j = i; j < s.length; j++) {
sb.append(s[j]);
}
answer[i] = sb.toString();
}
Comparator<String> myComparator = new Comparator<String>() {
@Override
public int compare(String s1, String s2) {
return s1.compareTo(s2);
}
};
Arrays.sort(answer, myComparator);
for(String str : answer) {
bw.write(str + "\n");
}
bw.flush();
bw.close();
}
}
๋ ๋ฐฉ๋ฒ ๋ชจ๋ ์ ํต๊ณผํ๋ค.
๋ฌธ์ ํ๊ณ
ํ๊ณ
๋๊ธ