본문 바로가기
Baekjoon/[1] 자료구조

[백준] 11656번 접미사 배열 JAVA (자바) 풀이

by Poorm 푸름 2023. 8. 17.

문제 11656번

 :  접미사 배열은 문자열 S의 모든 접미사를 사전순으로 정렬해 놓은 배열

 :   baekjoon 접미사를 사전 순으로 정렬  →   aekjoon

                                                                        baekjoon

                                                                        ekjoon

                                                                        joon

                                                                        kjoon

                                                                        n

                                                                        on

                                                                        oon

 

 [입력]


 :  첫째 줄에 문자열 S


 [출력]


 :  S의 접미사를 사전순으로 한 줄에 하나씩 출력


 [코드]

import java.io.*;
import java.util.*;
public class Main{
    public static void main(String[] args)throws IOException{
        BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
        String s = br.readLine();
        String spt[] = new String[s.length()];
        
        for(int i=0; i<s.length(); i++){
            spt[i] = s.substring(i,s.length()); 
        }
        
        Arrays.sort(spt);
        
        for(String result:spt)
            System.out.println(result);
        
    }
}

 

 [해설]
     

 :  String s = br.readLine();  첫째줄 입력
   

 :  String spt[] = new String[s.length()];  문자열 길이만큼 사이즈의 배열 만들기
        
 :  for(int i=0; i<s.length(); i++){
            spt[i] = s.substring(i,s.length());  substring은 원하는 길이로 문자열을 자를 수 있는 함수이다
    }                                                             i부터 s까지 만큼 문자열 잘라서 배열에 넣기
        
 :  Arrays.sort(spt);  배열을 사전 순으로 정렬
        
 :  for(String result:spt)  위에서 사전 순으로 정렬된 spt 배열을 result에 저장하고 출력
            System.out.println(result);
       

 

이제 풀어보러 갈께요 :)

 

 

https://www.acmicpc.net/problem/11656

 

11656번: 접미사 배열

첫째 줄에 문자열 S가 주어진다. S는 알파벳 소문자로만 이루어져 있고, 길이는 1,000보다 작거나 같다.

www.acmicpc.net

 

 

* 독학으로 익히는 코딩이라 틀린 것이 있을 수 있습니다. 오류가 있다면 댓글을 통해 알려주세요. 감사합니다. *