(Swift) 백준 2164 카드2

SteadySlower·2022년 6월 8일
0

Coding Test

목록 보기
59/305

2164번: 카드2

struct Queue<T> {
    var data = [T]()
    private var index = 0
    
    var count: Int {
        data.count - index
    }
    
    mutating func enqueue(_ element: T) {
        data.append(element)
    }
    
    mutating func dequeue() -> T {
        defer {
            index += 1
        }
        return data[index]
    }
}

let N = Int(readLine()!)!
var queue = Queue<Int>()

(1...N).forEach { n in
    queue.enqueue(n)
}

while queue.count != 1 {
    _ = queue.dequeue()
    queue.enqueue(queue.dequeue())
}

print(queue.dequeue())
  1. 카드를 버리는 행위, 맨 아래로 보내는 행위는 전부 카드 뭉치의 위의 카드가 대상입니다.
    1. 새로운 카드는 맨 아래에 추가, 나가는 카드는 맨위
    2. 선입선출의 구조
  2. 따라서 자료 구조 큐를 사용하면 쉽게 풀 수 있는 문제입니다.
profile
백과사전 보다 항해일지(혹은 표류일지)를 지향합니다.

0개의 댓글