Seize the day
article thumbnail

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값이 없다는 내용을 찾았다!

 

 

profile

Seize the day

@성 현

포스팅이 좋았다면 "좋아요❤️" 또는 "구독👍🏻" 해주세요!