AtCoder ABC043 B - バイナリハックイージー
AtCoderに取り組んだ際のメモです。
問題ページはこちらです。
Point: 200
Difficulty: 470
考えたこと
・'B' が入力された場合でも、削除するのは末尾からのみ
・スタックにどんどん詰めて、'B'の場合にポップしていけばよさそう
提出したコード
package main
import (
"bufio"
"fmt"
"os"
"strings"
)
func main() {
r := bufio.NewReader(os.Stdin)
var s string
fmt.Fscan(r, &s)
var st Stack
for i := 0; i < len(s); i++ {
if s[i] == '0' {
st.push("0")
} else if s[i] == '1' {
st.push("1")
} else if s[i] == 'B' {
st.pop()
}
}
fmt.Println(strings.Join(st, ""))
}
// Stack ...
type Stack []string
// pop ...
func (s *Stack) empty() bool {
return len(*s) == 0
}
// push ...
func (s *Stack) push(i string) {
*s = append(*s, i)
}
// pop ...
func (s *Stack) pop() (string, bool) {
if s.empty() {
return "", false
}
index := len(*s) - 1
res := (*s)[index]
*s = (*s)[:index]
return res, true
}
感想など
・文字列の追加と削除だけでよかったですね。
この記事が気に入ったらサポートをしてみませんか?