스택이란 FILO(First In Last Out)인 특징을 갖고 있는 자료 구조입니다
Queue 큐와 마찬가지로 Swift Foundation 에서는 따로 제공하지 않으므로 직접 다음과 같이 구현할 수 있겠습니다
스택이란?
쉽게 생각한다면 스택이란 값을 차곡차곡 쌓는다는 것이라고 생각할 수 있겠습니다.
롤을 해보셨다면 나서스 스택을 가지고 좀 더 쉽게 외울 수 있겠습니다. 나서스 q로 스택을 쌓은 다음 뚝빼기를 때린다면 가장 마지막까지 쌓은 스택의 값이 추가로 들어갑니다. 대략 이렇게 생각하면 조금 편하게 외울 수 있을 것 같습니다.
문제 풀이
- push: 가장 마지막에 새로운 값을 추가하여 값을 차곡 쌓습니다
- pop: 가장 마지막에 들어온 값을 없애야 하므로 removeLast 메서드를 사용합니다
- size: 현재 남아있는 배열의 개수를 출력합니다
- empty: 현재 비어있는지 여부를 파악합니다
- top: 가장 마지막으로 들어온 값이 무엇인지 확인합니다.
var arr: [Int] = []
for _ in 1...Int(readLine()!)! {
let tmp = readLine()!.split(separator: " ")
let command = String(tmp[0])
if command == "push" {
let value = Int(tmp[1])
arr.append(value!)
} else if command == "pop" {
print(arr.isEmpty ? -1 : arr.last!)
if !arr.isEmpty { arr.removeLast() }
} else if command == "size" {
print(arr.count)
} else if command == "empty" {
print(arr.isEmpty ? 1 : 0)
} else if command == "top" {
print(arr.isEmpty ? -1 : arr.last!)
}
}
'Algorithm > Baekjoon' 카테고리의 다른 글
Swift - 백준 1920번 수 찾기 (0) | 2024.08.11 |
---|---|
Swift - 백준 10814번 나이순 정렬 (0) | 2024.08.10 |
Swift - 백준 10845번 큐 (0) | 2024.08.09 |
Swift - 백준 10816번 숫자 카드2 (0) | 2024.08.08 |
Swift - 백준 2798번 블랙잭 (1등 코드) (0) | 2024.08.08 |