package main import . "fmt" import . "strings" func main() { var s string Scan(&s) s = ReplaceAll(s, "ing", "#") var ans,cnt int for _, ch := range s { switch ch { case 'S': cnt++ case '#': ans += cnt } } Println(ans) } /* 考察 文字列を先頭から走査 大文字Sが出るたびにSの個数をカウントしていき 文字列ingが出るたびにSの個数を答えに足していく かな これも動的計画法の一種? ing検出はだるいので適当な記号に置換で大丈夫かなあ */