문제 링크 : 백준 9935번
스택개념을 이용해서 푼 문제이다.(Go에는 stack STL이 없어서 슬라이스를 이용해서 구현)
FRULA
를 출력해준다.⭐️ c++은 string을 쪼개면 char이 되지만 Go에는 char형이 없기 때문에 string을 쪼개면 byte형이 된다. 따라서 stack은 byte형으로 선언해주고 폭발 문자열과 비교할때는 string으로 묶어줘서 비교해야한다.
package main
import (
"bufio"
"fmt"
"os"
)
var (
r = bufio.NewReader(os.Stdin)
w = bufio.NewWriter(os.Stdout)
s string
boom string
)
func main() {
defer w.Flush()
fmt.Fscan(r, &s, &boom)
var stack []byte
for i := 0; i < len(s); i++ {
stack = append(stack, s[i])
if stack[len(stack)-1] == boom[len(boom)-1] {
if len(stack) < len(boom) {
continue
}
if string(stack[len(stack)-len(boom):len(stack)]) == boom {
stack = stack[:len(stack)-len(boom)]
}
}
}
if len(stack) > 0 {
fmt.Fprintln(w, string(stack))
} else {
fmt.Fprintln(w, "FRULA")
}
}