
오늘도 알고리즘 문제를 풀면서 알게된 메소드를 적으려고 한다. reversed()는 알고리즘 문제를 풀면서 알게된 메소드 인데, removedFirst()와 popLast() 메소드는 오늘 수업을 들으면서 알게된 메소드이다.
함께 알아보도록 하자!
- reversed() 메소드는 배열을 뒤에서부터 나열해주는 메소드이다.
// 이렇게 사용 시 9,8,7... 이런식으로 탐색이 반대로 된다.
for j in (0..<str.count).reversed() {
if str[j] == arS[i] {
str.append(arS[i]);
result.append(i - j);
break;
}
}
// 이렇게 사용 시 배열을 뒤집어서 출력한다.
for i in 1..<food.count {
for j in 0..<food[i] / 2 {
result += String(i);
}
}
result += "0" + result.reversed();
- Swift에서는 'Queue'가 구현되어 있지 않다. 하지만 배열과 removeFirst() 메소드를 이용하면, 다른 언어에서 사용하던 'Queue'를 구현할 수 있다.
struct Queue<T> {
private var queue: [T] = []
public var count: Int {
return queue.count
}
public var isEmpty: Bool {
return queue.isEmpty
}
public mutating func enqueue(_ element: T) {
queue.append(element)
}
public mutating func dequeue() -> T? {
return isEmpty ? nil : queue.removeFirst()
}
}
var queue = Queue<Int>()
queue.enqueue(10)
queue.enqueue(20)
queue.dequeue() // 10
- Swift에서는 'Stack'도 구현되어 있지 않다. 하지만 배열과popLast() 메소드를 이용하면, 다른 언어에서 사용하던 'Stack'을 구현할 수 있다.
struct Stack<T> {
private var stack: [T] = []
public var count: Int {
return stack.count
}
public var isEmpty: Bool {
return stack.isEmpty
}
public mutating func push(_ element: T) {
stack.append(element)
}
public mutating func pop() -> T? {
return isEmpty ? nil : stack.popLast()
}
}
var stack = Stack<Int>()
stack.push(10)
stack.push(20)
stack.pop() // 20