공부하기/백준

[Python] 백준 풀기 11656 - 접미사 배열

XEV 2022. 12. 20. 20:50

파이썬 백준 11656번

실버 4

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

 

11656번: 접미사 배열

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

www.acmicpc.net

 

 

 

 

 

문제 보기

분류: 문자열, 정렬

 

 

 

 

 

문제 풀기

생성된 접미사를 저장할 리스트 s_ls 생성하고 첫 문자 s 를 저장한다.

s 의 문자 길이 - 1 만큼 for loop 을 실행하고, 이때 문자의 맨 앞자리를 하나씩 제거하고 이를 리스트에 누적 시킨다.

사전순으로 정렬하기 위해 sort() 함수를 이용하여 정렬을 한 후, 순서대로 출력한다.

 

 

 

 

 

코드 보기

import sys
inputdata = sys.stdin.readline


def fnSuffixArray(s):
    s_ls = [s]
    
    for _ in range(len(s) - 1):
        s = s[1:]           ## 맨 왼쪽 문자 하나 제거 후 저장.
        s_ls.append(s)
    
    # print(s_ls)         # test print
    
    s_ls.sort()
    
    for x in s_ls:
        print(x)


if __name__ == "__main__":
    s = str(inputdata().strip())
    # print(s)            # test print
    
    fnSuffixArray(s)



# baekjoon

# aekjoon
# baekjoon
# ekjoon
# joon
# kjoon
# n
# on
# oon