알고리즘 문제 풀이

백준 11656 파이썬 풀이

파란색 가운 2023. 5. 7. 16:33

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가 주어졌을 때, 모든 접미사를 사전순으로 정렬한 다음 출력하는 프로그램을 작성하시오.

입력

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

출력

첫째 줄부터 S의 접미사를 사전순으로 한 줄에 하나씩 출력한다.

예제 입력 1 복사

baekjoon

예제 출력 1 복사

aekjoon
baekjoon
ekjoon
joon
kjoon
n
on
oon
import sys
# sys.stdin.readline()
from collections import deque

elem = sys.stdin.readline().strip()
array = []
length = (len)(elem)
i = 0
for j in range(i,length):
   array.append(elem[j:length])
   i+=1

array.sort()

for i in array:
   print(i)

 

 

처음에 elem 입력받을 때 strip()을 안 넣었더니 배열의 원소에 자꾸 개행문자가 들어가서 조금 시간이 걸렸던 것 같다.

문제를 푼 방식은 baekjoon이 입력 예시였는데, 반복문의 index를 1씩 올려서 끝까지 문자열을 저장하는 방식

또 숙지해야할 점은 array.append(elem[j:length]) 하면 j~ (length-1)만큼의 문자열을 저장할 수 있는 간편한 기능이 있다는 것!

 

이 문제에서 알아갔던 점은 개행문자를 제거하고 싶다면 뒤에 strip()을 통해 개행문자를 제거하고

rstrip()은 공백을 제거해주는 역할이라는 것을 숙지하고 가면 좋을 것 같다!

'알고리즘 문제 풀이' 카테고리의 다른 글

백준 1260 파이썬 풀이  (0) 2023.05.07
백준 11652 파이썬 풀이  (0) 2023.05.07
백준 11655 파이썬 풀이  (0) 2023.05.07
파이썬 10820 풀이  (0) 2023.05.05
백준 10809 파이썬 풀이  (0) 2023.05.05