Notice
Recent Posts
Recent Comments
Link
REC
백준 10845번: 큐 - Swift 풀이 본문
SMALL
오늘의 문제
10845번: 큐
첫째 줄에 주어지는 명령의 수 N (1 ≤ N ≤ 10,000)이 주어진다. 둘째 줄부터 N개의 줄에는 명령이 하나씩 주어진다. 주어지는 정수는 1보다 크거나 같고, 100,000보다 작거나 같다. 문제에 나와있지
www.acmicpc.net
문제 요약
맨 처음에 입력으로 명령어 개수가 주어지고, 명령대로 수행하는 프로그램 작성
- push X: 정수 X를 큐에 추가.
- pop: 큐에서 가장 앞에 있는 정수를 빼고, 그 수를 출력. 큐가 빈 경우에는 -1을 출력.
- size: 큐에 들어있는 정수의 개수 출력.
- empty: 큐가 비어있으면 1, 아니면 0을 출력.
- front: 큐의 가장 앞에 있는 정수를 출력. 큐가 빈 경우에는 -1을 출력.
- back: 큐의 가장 뒤에 있는 정수를 출력. 큐가 빈 경우에는 -1을 출력.
내 풀이
import Foundation
/// 명령어 개수 입력
let N = Int(readLine()!)!
/// Int형 배열로 큐 자료구조 구현
var queue: [Int] = []
for _ in 0..<N {
// 입력을 띄어쓰기 기준으로 split 했을 때 배열 크기가 2가 되는 것이 push x 밖에 없음을 이용
let command = readLine()!.split(separator: " ")
// push를 제외한 다른 명령어들
if command.count == 1 {
switch command[0] {
case "pop": // 큐의 첫번째 값을 출력하고 삭제
print(queue.first ?? -1) // 큐가 비어있다면 first가 nil이라서 default 값을 -1로 설정해둠
if !queue.isEmpty { // 큐에 값이 존재할 때만 삭제를 진행
queue.removeFirst()
}
case "size": // 큐에 들어있는 정수의 개수 출력
print(queue.count)
case "empty": // 큐가 비었는지 안 비었는지
print(queue.isEmpty ? 1 : 0)
case "front": // 큐의 맨 앞 숫자 출력
print(queue.first ?? -1)
case "back": // 큐의 맨 뒤 숫자 출력
print(queue.last ?? -1)
default:
break
}
} else { // push 명령어
// push x에서 x의 값을 큐에 추가
queue.append(Int(command[1])!)
}
}
코드에 대한 설명은 주석으로 자세히 적었다.
이것도 그냥 '큐'라는 자료구조에 대한 이해만 있으면 다들 쉽게 풀 수 있을 것 같다!
LIST
'Algorithm' 카테고리의 다른 글
| 백준 5397번: 키로거 - Swift 풀이 (0) | 2024.04.08 |
|---|---|
| 백준 4949번: 균형잡힌 세상 - Swift 풀이 (1) | 2024.03.25 |
| 백준 1021번: 회전하는 큐 - Swift 풀이 (0) | 2024.03.23 |
| 백준 3986번: 좋은 단어 - Swift 풀이 (0) | 2024.03.16 |
| 백준 1874번: 스택 수열 - Swift 풀이 (0) | 2024.03.13 |