본문 바로가기

백준 PS일지/String

[백준/Swift] 11656: 접미사 배열

문제

 

11656번: 접미사 배열

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

www.acmicpc.net

간단한 문제 요약

  주어진 input word에 대해서 모든 접미사를 추출하고 이 부분 문자열들을 사전 순으로 정렬 후 출력하시오!!

고려해야 할 사항

  • 없습니다.

문제 풀이,  했갈렸던 점

 문자열 알고리즘 공부를 이제 막 접했습니다. 간단하게 문자열의 부분 문자열들을 가지고 놀고 싶었고 주어진 문자열에서 어떻게 부분 문자열들을 출력하고 정렬할까? 고민했습니다. 기본적으로 Swift에서 지원해주는 라이브러리를 이용했기에 정말 편하게 결과를 구할 수 있었습니다.,,(이게 맞는건가?)

 

 주어진 문자열의 각각 index를 얻은 후에 dropFirst함수를 이용해 주어진 index를 포함한 subsequence를 반환받습니다. 이후에 각각의 배열에 들어있는 prefix string들은 sorted(by:<)함수를 통해 사전순으로 정렬됩니다. 이후 joined함수를 통해 flatten한 sequence를 얻습니다.

코드

let word: String = readLine()!
print(word.enumerated().map{ word.dropFirst($0.offset)}.sorted(by: <).joined(separator: "\n"))