728x90
10828
코드
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
728x90