Daily iOS
CS 기초·알고리즘

O(1) 최댓값 스택

편집기의 실행 취소 스택처럼 push/pop 되는 값 중 "현재 최댓값"을 O(1)에 돌려주는 스택을 만들려고 합니다. 먼저 Swift 프로토콜로 인터페이스를 정의하고, 구현 아이디어를 설명해 주세요.

protocol MaxStack {
    associatedtype Element: Comparable
    mutating func push(_ x: Element)
    mutating func pop() -> Element?
    func peekMax() -> Element?
}
면접관은 이 답을 어떻게 들을까요? 넘어갈지, 더 물어볼지, 떨어뜨릴지 알려 주고, 걸리는 문장은 콕 집어 줘요. 점수는 그대로예요.
짧은 답 보기

값 스택과 별도로 '지금까지의 최댓값' 보조 스택을 유지한다. push 때 새 값이 보조 스택 top 이상이면 보조 스택에도 넣고, pop 때 두 top이 같으면 함께 뺀다. 모든 연산이 O(1), 공간 O(n).

받은 질문 공유