지구정복

[정렬] 백준 - 접미사 배열 (11656) 본문

카테고리 없음

[정렬] 백준 - 접미사 배열 (11656)

eeaarrtthh 2022. 5. 1. 18:52
728x90
반응형

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

 

-문제풀이

푸는 순서는 다음과 같다.

 

1. 각 접미사를 저장할 배열 선언 tail

 

2. substring으로 앞 글자부터 한 글자씩 자른 다음 tail 배열에 저장

 

3. Arrays.sort() 메서드를 이용해서 tail 배열을 정렬

 

4. 정렬된 배열 출력

 

 

-자바

package sort;

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.Arrays;

public class BJ116556_1 {

	public static void main(String[] args) throws IOException {
		//문자열 입력
		BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
		String S = br.readLine();
		
		//접미사 저장할 문자열 배열 선언
		String[] tail = new String[S.length()];
		
		//문자열 앞에서부터 하나씩 자른 뒤 tail 배열에 저장
		for( int i=0; i<S.length(); i++ ) 
			tail[i] = S.substring(i);
		
		//문자열 배열 정렬
		Arrays.sort( tail );
		
		//stringbuffer로 문자열 버퍼에 저장한 뒤 출력
		StringBuffer sb = new StringBuffer();
		for( String t : tail ) 
			sb.append(t+"\n");
		
		System.out.println( sb );
		br.close();
	}
}

 

-파이썬

import sys
readline = sys.stdin.readline

def main():
    str_s = readline()
    
    str_tail = []
    for i in range(len(str_s)-1):
        str_tail.append( str_s[i:] )
    
    str_tail.sort()
    
    for i in str_tail:
        print( i, end='' )
    

if __name__ == '__main__':
    main()
728x90
반응형
Comments