
TIL 17일 차 - Swift에서 문자열 뒤집기
1. 가장 기본적인 방법 (한 줄 풀이)
let str = "HelloSwift"
let reversedStr = String(str.reversed())
print(reversedStr)
reversed()로 뒤집은 뒤에 String()으로 다시 감싸는 이유는 reversed()로 뒤집으면 ReversedCollection 형태로 반환되기 때문에 String()으로 감싸줘야 한다.
2. 함수로 만들기 (코딩테스트용)
func reverseString(_ s: String) -> String {
return String(s.reversed())
} // 1번과 같은 이유로 String()으로 감싼 후 return
3. reduce로 뒤집기
let str = "hello"
let reversed = str.reduce("") { String($1) + $0 }
print(reversed) // "olleh" 출력
// 앞에서 하나씩 꺼내서 앞에 붙여버리는 방식
먼저 reduce는 대체 뭘까?
reduce(초기값) { 누적값, 현재값 in
새로운 누적값
}
처음에 이 초기값부터 시작해서 하나씩 돌면서 계속 값을 누적하라는 뜻
따라서 아까 썼던 reduce문을 해석해 보자면
시작값: "" -> 아직 아무 글자 없음
$0 -> 지금까지 만들어진 문자열
$1 -> 이번에 꺼낸 문자
<첫 번째 문자 'h'>
$0 = "" -> 지금까지 결과
$1 = "h" -> 현재 문자
result = "h"
<두 번째 문자 'e'>
$0 = "h"
$1 = "e"
result = "eh"
.
.
.
<다섯 번째 문자 'o'>
$0 = "o"
$1 = "lleh"
result = "olleh"
하지만 reduce 방식은 성능이 안 좋아 비추한다.
4. 직접 구현 (문자열 구조 이해용)
func reverseManually(_ s: String) -> String {
var result = ""
for char in s {
result = String(char) + result
}
return result
}
로직을 이해하기에는 좋지만 실수/코테에서는 비추한다.
'iOS > Swift ' 카테고리의 다른 글
| [iOS-Swift] 고차함수 Map 활용하기 (0) | 2026.01.19 |
|---|---|
| [iOS-Swift] 심화 문법 문제 - 숫자 야구 게임 (0) | 2026.01.18 |
| [iOS-Swift] 기초 문법 개인 과제 최최최종_리팩토링.swift (0) | 2026.01.14 |
| [iOS-Swift] 에러처리 (0) | 2026.01.14 |
| [iOS] ARC 순환참조 해제 문제 (0) | 2026.01.14 |