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
}


感想など

・文字列の追加と削除だけでよかったですね。


この記事が気に入ったらサポートをしてみませんか?