문제

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

baekjoon의 접미사는 baekjoon, aekjoon, ekjoon, kjoon, joon, oon, on, n 으로 총 8가지가 있고, 이를 사전순으로 정렬하면, aekjoon, baekjoon, ekjoon, joon, kjoon, n, on, oon이 된다.

문자열 S가 주어졌을 때, 모든 접미사를 사전순으로 정렬한 다음 출력하는 프로그램을 작성하시오.

www.acmicpc.net/problem/11656

  • 입력

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

  • 출력

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

최종 코드

아주 쉬운 코드이지만 문제를 더 간단하게 푸는 방법을 익혀두려고 가져왔다.

s = input()
l = []

for i in range(len(s)):
    l.append(s[i:])

for x in sorted(l):
    print(x)

Enhanced

위 코드를 아래처럼 더 간단하게 바꿀 수 있다. 이렇게 풀면 for loop을 돌면서 append를 사용하지 않아도 되고, 출력도 for loop을 돌면서 하지 않아도 된다.

s = input()
l = [s[i:] for i in range(len(s))]
l.sort()

print(*l, sep="\n")

또는 join을 이용해서 출력하는 방법도 있다.

s = input()
l = [s[i:] for i in range(len(s))]
l.sort()

print("\n".join(l))