728x90
https://www.acmicpc.net/problem/11656
11656번: 접미사 배열
첫째 줄에 문자열 S가 주어진다. S는 알파벳 소문자로만 이루어져 있고, 길이는 1,000보다 작거나 같다.
www.acmicpc.net
문제 설명
접미사 배열은 문자열 S의 모든 접미사를 사전순으로 정렬해 놓은 배열이다.
baekjoon의 접미사는 baekjoon, aekjoon, ekjoon, kjoon, joon, oon, on, n 으로 총 8가지가 있고, 이를 사전순으로 정렬하면, aekjoon, baekjoon, ekjoon, joon, kjoon, n, on, oon이 된다.
문자열 S가 주어졌을 때, 모든 접미사를 사전순으로 정렬한 다음 출력하는 프로그램을 작성하시오.
풀이 과정
- 나의 풀이
# 11656 접미사 배열
import sys
input = sys.stdin.readline
text = input()
text_lst = list(text)
result = [0]*(len(text_lst))
for j in range(len(text_lst)) :
result[j] = text_lst[j:-1]
result_sorted = sorted(result)
for i in range(1,len(text_lst)) :
print("".join(result_sorted[i]))
리스트화시켜서 슬라이싱한 뒤 오름차순으로 정렬해주고 join함수를 이용하여 출력해주면 된다!!!
후기
join함수는 많이 쓰이는듯. "리스트원소 사이에 들어갈 것".join(리스트)를 통해 쉽게 사용가능!!
'Algorithm > string' 카테고리의 다른 글
[백준] 11720 숫자의 합 (C++) (0) | 2022.01.18 |
---|---|
[백준] 11718 그대로 출력하기 (C++) (0) | 2022.01.13 |
[백준] 11652 카드 (파이썬 Python) (0) | 2021.08.01 |
[백준] 1946 신입사원 (파이썬 Python) (0) | 2021.07.29 |
[백준] 10989 수 정렬하기 3 (파이썬 Python) (0) | 2021.07.27 |