BOJ-10845, 큐
문제 📑
https://www.acmicpc.net/problem/10845
문제 정리 ▾
- 저번 스택(10828) 문제와 정말 비슷한 유형이었다.
- 명령어의 개수를 입력받고, 각각의 명령어에 맞는 기능을 구현해주면 된다.
- push: 정수 x를 큐에 넣는 연산
- pop: 큐에 가장 앞에 있는 정수를 빼고, 그 수를 출력 but! 큐가 비어있으면 "-1" 출력
- size: 큐에 사이즈 출력
- empty: 큐가 비어있으면 "1", 아니면 "0" 출력
- front: 큐의 가장 앞에 있는 정수 출력, but! 큐가 비어있으면 "-1" 출력
- back: 큐의 가장 뒤에 있는 정수 출력, but! 큐가 비어있으면 "-1" 출력
접근 🚶🏻
나의 생각 ▾
- 저번 스택과 비슷한 문제이기에 저번과 비슷한 케이스로 풀면 된다고 생각했다.
나의 해결 ▾
var queue = [Int]()
func solution() {
for _ in 0..<Int(readLine()!)! {
let order = readLine()!.split(separator: " ")
switch order[0] {
case "push":
push(Int(order[1])!)
case "pop":
print(pop())
case "size":
print(size())
case "empty":
print(empty())
case "front":
print(front())
default:
print(back())
}
}
}
func push(_ value: Int){
queue.append(value)
}
func pop() -> Int {
if queue.isEmpty {
return -1
} else {
return queue.removeFirst()
}
}
func size() -> Int {
return queue.count
}
func empty() -> Int {
if queue.isEmpty {
return 1
} else {
return 0
}
}
func front() -> Int {
if queue.isEmpty {
return -1
} else {
return queue.first!
}
}
func back() -> Int {
if queue.isEmpty {
return -1
} else {
return queue.last!
}
}
solution()
- 코드에 관한 내용은 밑에서 살펴보자 😀
코드 리뷰 ▾
push 외에 모든 함수는 Int형을 반환하도록 설계를 하였다.
func push(_ value: Int){
queue.append(value)
}
- push는 말 그대로 queue라는 Int형 배열 변수에 값을 넣어주면 된다.
func pop() -> Int {
if queue.isEmpty {
return -1
} else {
return queue.removeFirst()
}
}
- pop은 큐가 비어있으면 -1을, 안비어있으면 queue.removeFirst()를 통해 가장 앞의 값을 지워줌과 동시에 반환할 수 있도록 구현했다.
func size() -> Int {
return queue.count
}
func empty() -> Int {
if queue.isEmpty {
return 1
} else {
return 0
}
}
- size는 queue의 크기를 반환해주면 되기 때문에 queue.count를 반환시켰다.
- emtpy는 비어있는지 여부이기 때문에 if문과 queue.isEmpty를 사용해 각각의 케이스에 맞게 값을 반환해주었다.
func front() -> Int {
if queue.isEmpty {
return -1
} else {
return queue.first!
}
}
func back() -> Int {
if queue.isEmpty {
return -1
} else {
return queue.last!
}
}
- front와 back은 같은 구조이어서, 비어있지 않을 경우만 queue.first! || queue.last! 이렇게 구분해 구현해주면 끝!!
Additional 📂
- 스택 문제와 비슷한 구조라 보자마자 바로 풀 수 있었다.
- 자료 구조의 기반은 잘 쌓았다고 생각돼서 나름 뿌듯했다. 😆
10866번(덱) 문제도 이와 비슷하여 따로 게시물을 작성하지 않았습니다. 😅
'Algorithm.zip' 카테고리의 다른 글
[Swift]BOJ-10799 (0) | 2022.02.04 |
---|---|
[Swift]BOJ-17413 (0) | 2022.02.03 |
[Swift]BOJ-1406 (0) | 2022.02.01 |
[Swift]BOJ-9012 (0) | 2022.01.31 |
[Swift]BOJ-9093 (0) | 2022.01.31 |