백준/문자열
11656 접미사 배열
have a good time
2021. 10. 18. 19:54
https://www.acmicpc.net/problem/11656
11656번: 접미사 배열
첫째 줄에 문자열 S가 주어진다. S는 알파벳 소문자로만 이루어져 있고, 길이는 1,000보다 작거나 같다.
www.acmicpc.net
** 주의하기
1)
String s = br.readLine();
//baekjoon
word[0]= s;
for(int i =0; i<7;i++) {
s = s.replace(String.valueOf(word[i].charAt(0)), "");
System.out.println(s);
word[i+1] =s;
}
이런식으로, baekjoon의 문자열의 맨 앞글자를 replace를 이용해서 제거 하려고 했는데,
동일한 문자열인 o가 나타났을 때는, 두 글자를 모두 제거해서 문제가 생김
String.valueOf(word[0].charAt(0))을 하면
word[0] , 즉 baekjoon 글자의 맨 앞글자인 b를 나타내는데,
이는 char형이므로
String.valueOf를 통해 String 형으로 바꿈
2) StringBuffer를 이용해서 한글자씩 잘라나가려고 했는데, 얘도 계속 오류나서 해결하지 못함
(StringBuffer의 delete, deleteCharAt 메소드 이용)
----------------------
그래서 다른 사람의 코드를 참고해서 작성함
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 br = new BufferedReader(new InputStreamReader(System.in));
String input[] = br.readLine().split("");
String result[]= new String[input.length];
result=input;
for(int i=0; i<result.length;i++) {
for(int j=i+1;j<result.length;j++) {
result[i]+=input[j];
}
}
Arrays.sort(result);
for(String value : result) {
System.out.println(value);
}
}
}
참고 자료 :
https://agility.tistory.com/62
[백준 11656번] 접미사 배열 (Java 풀이)
백준알고리즘 11656번 : 접미사 배열 주어진 문자열의 접미사를 모두 출력하되, 알파벳순으로 정렬하여 출력하는 문제이다. Split method를 이용해 받은 문자열을 배열에 담고, 이와 똑같은 배열을
agility.tistory.com