본문 바로가기

Code/algorithm with go

10828 bufio.NewReader Fscanf

10828

www.acmicpc.net/problem/10828

 

10828번: 스택

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

www.acmicpc.net

코드

package main

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

func main() {
	reader := bufio.NewReader(os.Stdin)
	var t int
	fmt.Scanf("%d\n", &t)
	var s []int
	for {
		var cmd string
		var num int
		fmt.Fscanf(reader, "%s %d\n", &cmd, &num)
		if cmd == "push" {
			s = append(s, num)
		} else if cmd == "pop" {
			if len(s) == 0 {
				fmt.Println(-1)
			} else {
				xs := s
				s = s[:len(s) - 1]
				fmt.Println(xs[len(xs) - 1]	)
			}
		} else if cmd == "size" {
			fmt.Println(len(s))
		} else if cmd == "empty"{
			if len(s) == 0 {
				fmt.Println(1)
			} else {
				fmt.Println(0)
			}
		} else if cmd == "top" {
			if len(s) == 0 {
				fmt.Println(-1)
			} else {
				fmt.Println(s[len(s) - 1])
			}
		}
		// fmt.Println(s)
		t = t - 1
		if t == 0 {
			return
		}
	}
}

 

스택의 첫번째 문제다. 

Go에서 pop을 어떻게 구현하는지 (맨마지막것뿐 만 아니라): 아래 링크 참조

그리고 입력을 빠른 입력을 사용하니 시간초과에러가 안나고 통과할 수 있었다.

 

 

 

:stackoverflow.com/questions/52546470/whats-the-go-idiom-for-pythons-list-pop-method

 

What's the Go idiom for Python's list.pop() method?

In Python, I have the following: i = series.index(s) # standard Python list.index() function tmp = series.pop(i) blah = f(tmp) series.append(tmp) In converting this to Go, I am looking for a simi...

stackoverflow.com