풀이방법
사용된 것:
Arryas.sort
배열의 요소들을 사전순으로 정렬한다.
StringBuilder
문자열을 편집할 수 있게 해준다.
2022.01.14
문자열이 소문자로만 이루어져있다는 것에서 착안하여, 문자열의 한 글자를 '0'으로 대체함으로써 지워나가는 방법을 선택했다.
앞 글자부터 차례차례 방문하여,
한 글자를 지우고 뒤의 나머지 부분을 접미사 배열에 저장
또 다음 글자를 지우고 나머지 부분을 접미사 배열에 저장
이 과정을 반복하였다.
코드
Java(2022.01.14)
import java.util.Arrays;
import java.util.Scanner;
public class Main {
public static void main(String[] args) {
// TODO Auto-generated method stub
Scanner sc = new Scanner(System.in);
//문자열 읽어오기
String str = sc.next();
//문자열의 길이
int len = str.length();
//접미사 배열
String sufs[] = new String[len];
//StringBuilder 선언
StringBuilder sb = new StringBuilder(str);
//첫 번째 접미사는 단어 그 자체이다.
sufs[0] = str;
//두 번째 접미사부터 마지막 접미사까지를 생성하는 반복문
for(int i = 1; i<len; i++) {
//문자열의 가장 앞 글자부터 지워간다. 지워진 글자는 '0'으로 대체한다.
sb.setCharAt(i-1, '0');
//지워지지 않은 부분을 접미사로서 저장한다.
for(int j = 0; j<len; j++) {
if(sb.charAt(j) != '0') {
//'null' + (접미사) 가 저장되는 일을 막기 위한 조건문
if(sufs[i] == null) {
sufs[i] = String.valueOf(sb.charAt(j));
continue;
}
sufs[i] += sb.charAt(j);
}
}
}
//접미사들을 사전순으로 정렬
Arrays.sort(sufs);
for(int i = 0; i<len; i++) {
System.out.println(sufs[i]);
}
sc.close();
}
}
'알고리즘 문제풀이 > 백준' 카테고리의 다른 글
#6996 : 애너그램 (0) | 2022.01.21 |
---|---|
#4583 : 거울상 (0) | 2022.01.19 |
#15904 : UCPC는 무엇의 약자일까? (0) | 2022.01.19 |
#1026 : 보물 (0) | 2022.01.14 |
#15889 : 호 안에 수류탄이야!! (0) | 2022.01.13 |