[Swift] 백준 10866 - 덱
덱은 double-ended queue로 양쪽 끝에서 삽입 및 삭제가 가능한 자료구조이다.
큐를 구현하듯이 구현하면 되는데 우선 통과된 최종 코드는 다음과 같다.
최종 코드
import Foundation
let N = Int(readLine()!)!
var deque = [Int]()
for _ in 0..<N {
let commandLine = readLine()!.split(separator: " ")
let command = String(commandLine[0])
if command == "push_front" {
deque.insert(Int(commandLine[1])!, at: 0)
} else if command == "push_back" {
deque.append(Int(commandLine[1])!)
} else if command == "pop_front" {
print(deque.isEmpty ? -1 : deque.removeFirst())
} else if command == "pop_back" {
print(deque.isEmpty ? -1 : deque.removeLast())
} else if command == "size" {
print(deque.count)
} else if command == "empty" {
print(deque.isEmpty ? 1 : 0)
} else if command == "front" {
print(deque.isEmpty ? -1 : deque[0])
} else if command == "back" {
print(deque.isEmpty ? -1 : deque.last!)
}
}
- removeLast() vs popLast()
: 둘 다 배열의 마지막 값을 제거하고 반환함- removeLast() : Int 반환, 배열이 빈 경우 고려X => 컴파일에러
- popLast() : Int? 반환, 배열 빈 경우 nil
=> 따라서, 배열이 비어있지 않음을 알고 있을 경우 removeLast를 사용하고, popLast()를 사용하고 싶다면 popLast()! 다음과 같이 강제 언래핑 해주어야한다.
- deque[0] vs deque.first!
: 두 가지 모두 배열의 맨 앞자리 값을 가져온다.- deque[0]가 더 빠르다. 또한 first는 Int?를 반환하기 때문에 꼭 강제언래핑 처리해주어야한다.
Author And Source
이 문제에 관하여([Swift] 백준 10866 - 덱), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://velog.io/@sun02/Swift-백준-10866-덱저자 귀속: 원작자 정보가 원작자 URL에 포함되어 있으며 저작권은 원작자 소유입니다.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)