Description
Code
package main
import (
"bufio"
"fmt"
"os"
)
var (
sc = bufio.NewReader(os.Stdin)
wr = bufio.NewWriter(os.Stdout)
Que []int
)
// 정수 X를 큐에 넣음
func push(x int) {
Que = append(Que, x)
}
// 큐에 가장 앞에 있는 정수를 빼고, 그 수를 출력
func pop() int {
if len(Que) == 0 {
return -1
}
ret := Que[0]
Que = Que[1:]
return ret
}
// 큐의 정수 개수 출력
func size() int {
return len(Que)
}
// 큐의 공백 확인
func empty() int {
if len(Que) == 0 {
return 1
}
return 0
}
// 큐의 가장 앞에 있는 정수를 출력
func front() int {
if len(Que) == 0 {
return -1
}
return Que[0]
}
// 큐의 가장 뒤에 있는 정수를 출력
func back() int {
if len(Que) == 0 {
return -1
}
return Que[len(Que) - 1]
}
func main() {
defer wr.Flush()
var N int
fmt.Fscanln(sc, &N)
for N > 0 {
var comment string
var num int
fmt.Fscanln(sc, &comment, &num)
switch comment {
case "push":
push(num)
case "pop":
fmt.Fprintln(wr, pop())
case "size":
fmt.Fprintln(wr, size())
case "empty":
fmt.Fprintln(wr, empty())
case "front":
fmt.Fprintln(wr, front())
case "back":
fmt.Fprintln(wr, back())
}
N--
}
return
}
- 큐 구현:
- push(x): 큐의 맨 뒤에 정수 x를 추가함.
- pop(): 큐의 맨 앞에 있는 정수를 제거하고 반환함. 큐가 비어 있으면 -1을 반환함.
- size(): 큐에 들어 있는 정수의 개수를 반환함.
- empty(): 큐가 비어 있으면 1, 아니면 0을 반환함.
- front(): 큐의 맨 앞에 있는 정수를 반환함. 큐가 비어 있으면 -1을 반환함.
- back(): 큐의 맨 뒤에 있는 정수를 반환함. 큐가 비어 있으면 -1을 반환함.
- 입력 처리 및 명령 실행:
- 첫 번째 입력 값 N은 처리해야 할 명령의 개수를 나타냄.
- 각 명령은 명령어와, 필요하면 정수 num으로 구성됨.
- 명령어에 따라 적절한 함수(push, pop, size, empty, front, back)를 호출하고, 반환값을 출력함.
- 명령어 동작 요약:
- push X: 정수 X를 큐에 추가함.
- pop: 큐의 맨 앞 정수를 제거하고 반환함. 비어 있으면 -1 반환.
- size: 큐에 있는 정수 개수를 반환함.
- empty: 큐가 비어 있는지 확인하고, 비었으면 1, 아니면 0 반환.
- front: 큐의 맨 앞 정수를 반환함. 비어 있으면 -1 반환.
- back: 큐의 맨 뒤 정수를 반환함. 비어 있으면 -1 반환.
'leetcode , 백준' 카테고리의 다른 글
[Go] 28279 덱 2 (0) | 2025.01.07 |
---|---|
[Go] 11866 요세푸스 문제 0 (0) | 2025.01.03 |
[Go] 4949 균형잡힌 세상 (0) | 2025.01.03 |
[Go] 10773 제로 (0) | 2025.01.03 |
[Go] 9012 괄호 (0) | 2025.01.02 |