leetcode , 백준

[Go] 18258 큐 2

_HelloWorld_ 2025. 1. 3. 16:28

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을 반환함.
  • 입력 처리 및 명령 실행:
    1. 첫 번째 입력 값 N은 처리해야 할 명령의 개수를 나타냄.
    2. 각 명령은 명령어와, 필요하면 정수 num으로 구성됨.
    3. 명령어에 따라 적절한 함수(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