728x90
문제 11656
[ 문제 풀이 ]
문자열을 앞에서부터 하나씩 잘라서 뒷부분을 ArrayList<>에 저장한 후, 정렬해주면 됩니다. String 클래스의 substring()을 활용하여 인덱스를 매개변수로 해서 차례대로 접미사들을 구합니다.
Collections.sort()로 ArrayList<>를 정렬해준 후, 출력해줍니다.
ArrayList<> 대신, String[]을 활용하여 배열에 저장해주는 방법도 있습니다. 이 경우에는 정렬할 때 Arrays.sort()을 사용하면 됩니다.
[ 코드 ]
1) ArrayList<> 사용
import java.io.*;
import java.util.ArrayList;
import java.util.Collections;
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 str = br.readLine();
int str_len = str.length();
ArrayList<String> suffixes = new ArrayList<>();
for (int i = 0; i < str_len; i++) {
suffixes.add(str.substring(i));
}
Collections.sort(suffixes);
for (String s: suffixes) {
bw.write(s);
bw.newLine();
}
bw.flush();
}
}
2) String[] 사용
import java.io.*;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.Collections;
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 str = br.readLine();
int str_len = str.length();
String[] suffixes = new String[str_len];
for (int i = 0; i < str_len; i++) {
suffixes[i] = str.substring(i);
}
Arrays.sort(suffixes);
for (String s: suffixes) {
bw.write(s);
bw.newLine();
}
bw.flush();
}
}
728x90
'Algorithm > Baekjoon' 카테고리의 다른 글
[Baekjoon] 백준 17413번: 단어 뒤집기 2 (JAVA) (0) | 2023.11.07 |
---|---|
[Baekjoon] 백준 5052번: 전화번호 목록 (JAVA) (1) | 2023.11.06 |
[Baekjoon] 백준 9935번: 문자열 폭발 (Java) (1) | 2023.11.03 |
[Baekjoon] 백준 9251번: LCS (JAVA) (1) | 2023.11.02 |
[Baekjoon] 백준 1316번: 그룹 단어 체커 (JAVA) (1) | 2023.10.31 |