[TIL] Swift - reversed(), removeFirst(), popLast()

신승현·2024년 3월 5일

TIL

목록 보기
33/72
post-thumbnail

오늘도 알고리즘 문제를 풀면서 알게된 메소드를 적으려고 한다. reversed()는 알고리즘 문제를 풀면서 알게된 메소드 인데, removedFirst()와 popLast() 메소드는 오늘 수업을 들으면서 알게된 메소드이다.
함께 알아보도록 하자!

1. reversed()

  • 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();

2. removeFirst()

  • 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

3. popLast()

  • 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
profile
개발자

0개의 댓글