reversed()
공식 문서:
https://developer.apple.com/documentation/foundation/data/1780245-reversed/
reversed() | Apple Developer Documentation
Returns a view presenting the elements of the collection in reverse order.
developer.apple.com
- 컬렉션의 요소를 역순으로 나타내는 뷰를 반환한다.
func reversed() -> ReversedCollection<Data>
- 컬렉션의 순서를 뒤집을 때 사용한다.
- String 문자열도 배열이고 배열은 컬렉션이므로 뒤집을 수 있다!
- 리턴타입이 ReversedCollection 이므로, 필요에 따라 Array 또는 String으로 형변환 해주어야 한다.
✅ 시간복잡도 : O(1)
SwapAt(_:_:)
공식 문서:
https://developer.apple.com/documentation/swift/array/swapat(_:_:)
swapAt(_:_:) | Apple Developer Documentation
Exchanges the values at the specified indices of the collection.
developer.apple.com
- 컬렉션에서 지정된 인덱스들의 값들을 교환한다.
mutating func swapAt(
_ i: self.Index,
_ j: self.Index
)
// 이때 i와 j가 같지 않은 컬렉션의 유효한 인덱스여야 한다. 만약 둘 다 동일하면 효과가 없다.
✅ 시간복잡도 : O(1)
해당 함수를 배우게 된 문제
https://www.acmicpc.net/problem/2908
2908번: 상수
상근이의 동생 상수는 수학을 정말 못한다. 상수는 숫자를 읽는데 문제가 있다. 이렇게 수학을 못하는 상수를 위해서 상근이는 수의 크기를 비교하는 문제를 내주었다. 상근이는 세 자리 수 두
www.acmicpc.net
reversed() 사용으로 풀어보기
import Foundation
let numbers = readLine()!.split(separator: " ")
var answer : [Int] = []
for i in numbers{
answer.append((Int(String(i.reversed()))!)) // i도 String이므로 reversed()를 사용할 수 있다.
}
print(answer[0] > answer[1] ? answer[0] : answer[1])
- split()과 components()의 차이에 대해서 파악했다면 위의 코드에서 split() 후에 map() 고차함수를 사용해서 String으로 자료형을 바로 변환할 수 있었다.
- 다음 글로 split()과 components()의 차이에 대해서 공부해서 올려야겠다.
swapAt(_:_:) 사용으로 풀어보기
import Foundation
var numbers = readLine()!.split(separator: " ").map{ String($0) }
var answer : [Int] = []
for i in 0..<numbers.count{
var tmp = Array(numbers[i]) // Array: [character]
tmp.swapAt(0, 2)
answer.append(Int(String(tmp))!)
}
print(answer[0] > answer[1] ? answer[0] : answer[1])
- swapAt()으로 풀려고 했는데 계속 오류가 발생해 30분정도 해맨것같다.
- 먼저 최대한 간단하게 코딩하기 위해서 tmp.swapAt()을 append() 내부에 넣어서 바로 할려고 했지만 계속 오류가 발생했다.
- 그 이후 swapAt()을 코드에서 단독 실행 후, tmp를 사용했더니 오류가 해결됐다!
- swapAt()은 python에서 sort()처럼 해당 함수를 사용하면 즉각 tmp가 swap 되는것이지 swap한 값을 return 하지 않는다는 걸 몸소 1시간에 걸쳐 파악했다....(추가 30분 소모..)
- 앞으로 swapAt()은 단독으로 사용해야겠다!!
- (추가) swapAt(_:_:) 함수는 배열에 대한 참조값을 변경하여 return값이 없다는 내용을 찾았다!
'iOS > 문법' 카테고리의 다른 글
[Swift] Queue Struct(구조체)와 Class(클래스) 구현하기! (0) | 2023.10.03 |
---|---|
[Swift] 인덱스의 범위만큼만 String 배열 바꿔주기! - replaceSubrange(_:with:) (2) | 2023.09.26 |
[Swift] 특수 문자열 출력하기( \, ") (0) | 2023.09.23 |
[Swift] 문자열 쪼개기(components VS split) (0) | 2023.09.22 |
[swift] 변수,상수,배열,딕셔너리,조건문,반복문,옵셔널 개념정리 (0) | 2023.07.19 |