본문 바로가기

Code/algorithm with go

10845

10845

www.acmicpc.net/problem/10845

 

10845번: 큐

첫째 줄에 주어지는 명령의 수 N (1 ≤ N ≤ 10,000)이 주어진다. 둘째 줄부터 N개의 줄에는 명령이 하나씩 주어진다. 주어지는 정수는 1보다 크거나 같고, 100,000보다 작거나 같다. 문제에 나와있지

www.acmicpc.net

코드

package main

import (
	"bufio"
	"fmt"
	"os"
)

func main() {
	reader := bufio.NewReader(os.Stdin)
	writer := bufio.NewWriter(os.Stdout)
	var t int
	fmt.Fscanf(reader, "%d\n", &t)
	var stack []string
	for {
		input, _, _ := reader.ReadLine()
		input = append(input, '\n')
		for _, s := range input {
			if string(s) == " " || string(s) == "\n" {
				for j, _ := range stack {
					fmt.Fprint(writer, string(stack[len(stack)-(j+1)]))
				}
				fmt.Fprintf(writer, " ")
				writer.Flush()
				stack = nil
			} else {
				stack = append(stack, string(s))
			}
		}
		fmt.Fprintf(writer, "\n")
		writer.Flush()
		t = t - 1
		if t == 0 {
			return
		}
	}
}

 

고의 슬라이스로 큐를 흉내 내봤다. 

파이썬 경우 리스트로 구현하면 느려지고 큐를 사용하고 싶을땐 덱을 사용해야 한다고 한다.

나중에 array로 구현하고  benchmark 하면 태워봐야겠다. 

그리고 궁금한건 array 구현하면 크기가 정해져 있는데.. 큐라는것은 항상 크기가 정해져 있어야하는건가? 에 대해 궁금하다..