일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | ||||
4 | 5 | 6 | 7 | 8 | 9 | 10 |
11 | 12 | 13 | 14 | 15 | 16 | 17 |
18 | 19 | 20 | 21 | 22 | 23 | 24 |
25 | 26 | 27 | 28 | 29 | 30 | 31 |
Tags
- Playground #Swift
- 1935
- Apple
- Algorithm
- 코드트리
- 코딩트리조별과제
- HumanInterfaceGuidelines
- AppleDeveloperAcademy
- 백준
- HumanInterfaceGuideline
- SWiFT
- 애플디벨로퍼아카데미
- 코딩테스트
- POSTECH
- Xcode
- HIG
Archives
- Today
- Total
WonniOS
[Swift] 백준 11656번 : 접미사 배열 본문
WWDC가 끝나고 간만에 푼 문제..
막힘 없이 풀긴 풀었는데 시간과 메모리를 너무 잡아먹은 좋지 않은 풀이였다..
문제 링크
https://www.acmicpc.net/problem/11656
11656번: 접미사 배열
첫째 줄에 문자열 S가 주어진다. S는 알파벳 소문자로만 이루어져 있고, 길이는 1,000보다 작거나 같다.
www.acmicpc.net
풀이
본문내용넣기
풀이
우선 접미사를 뽑아내기 위해서 prefix() 메소드를 사용했다.
prefix(maxLength: Int) 메소드는 Array의 인스턴스 메소드이지만 리턴타입은 ArraySlice이다.
그래서 나는 joined처리를 해주어서 string으로 바꿔주었고, reversed()를 하지 않으면 예시인 baekjoon에서 접미사가
b, ba, bae, baek... 이렇게 맨 처음을 계속 포함하기 때문에 아예 reversed를 해주어서 baekjoon을 noojkeab로 바꾸어주었다.
그리고 난 뒤엔, sort를 이용해 알파벳 순서로 정렬해주었다.
제출 코드
let input = readLine()!.map{String($0)}.reversed()
var arr: [String] = []
for i in 1...input.count {
var subSequence = input.prefix(i).reversed().joined(separator: "")
arr.append(subSequence)
}
arr.sort()
for i in 0..<arr.count {
print(arr[i],terminator: "\n")
}
수정 코드
let S = readLine()!
var arr = [String]()
for i in S.indices{
arr.append(String(S[i..<S.endIndex]))
}
print(arr.sorted().joined(separator: "\n"))
다른 사람의 풀이를 보니 아주 간결하게 잘 푼 풀이가 있었다.
indeices로 안전하게 배열을 탐색하면서 바로 String으로 변환해서 배열에 넣어주었다..
그리고 바로 print하면서 sort처리 해버리기...
'Algorithm' 카테고리의 다른 글
[코드트리 조별과제] IL - 십자 모양 폭발 (3) | 2024.07.22 |
---|---|
[Swift] 백준 10820번: 문자열 분석 (0) | 2023.04.07 |
[Swift] 백준 10808번: 알파벳 개수 (0) | 2023.04.06 |
[Swift] 11. 백준 1935번: 후위 표기식2 (0) | 2023.04.05 |
[Swift] 10. 백준 17298번: 오큰수 (0) | 2023.04.04 |