2018-05-26のAtCorder Beginner Contest098
初心者が「動いた!!」で書いたコードを残す
生き恥の感じがする
あと、初心者マンには難しいD問題は解けてないので書いてないです
BからC、CからDで一気に難しくなる
目次
A Add Sub Mul
https://beta.atcoder.jp/contests/abc098/tasks/abc098_a
package main import ( "fmt" ) func main(){ var a, b int fmt.Scan(&a, &b) answer := a+b if answer < (a-b){ answer = a-b } if answer < (a*b){ answer = a*b } fmt.Print(answer) }
B Cut and Count
https://beta.atcoder.jp/contests/abc098/tasks/abc098_b
package main import ( "fmt" "strings" ) func main(){ var n int fmt.Scan(&n) var s string fmt.Scan(&s) var answer int for i := 0; i < n; i++ { var be, af string for c, r := range s { v := string(r) if c <= i { if !(strings.Contains(be, v)) { be = be + v } }else{ if !(strings.Contains(af, v)) { af = af + v } } } fmt.Println("be : af,",be,":",af) num := 0 for _, x := range be { y := string(x) if strings.Contains(af, y) { num++ } } if num > answer{ answer = num } } fmt.Print(answer) }
C Attention
https://beta.atcoder.jp/contests/abc098/tasks/arc098_a
package main import ( "fmt" "strings" ) func main(){ var n int fmt.Scan(&n) var s string fmt.Scan(&s) answer := n // 前処理 m := n-1 sumE := make([]int, n) sumW := make([]int, n) ss := strings.Split(s,"") if ss[m] == "E" { sumE[m] = 1 }else{ sumE[m] = 0 } if ss[0] == "W" { sumW[0] = 1 }else{ sumW[0] = 0 } for r := 1; r < len(ss); r++ { if ss[m-r] == "E" { sumE[m-r] = sumE[n-r]+1 }else{ sumE[m-r] = sumE[n-r] } if ss[r] == "W" { sumW[r] = sumW[r-1]+1 }else{ sumW[r] = sumW[r-1] } } // 比較 if answer > sumW[m] { answer = sumW[m] } if answer > sumE[0] { answer = sumE[0] } for r:=1; r+1 < n; r++ { tmp := sumE[r+1] + sumW[r-1] if answer > tmp { answer = tmp } } fmt.Print(answer) }
C問題が動いたあと、他の人の回答を見に行って気が発狂気味だった
コードの簡潔さ、処理時間、使用メモリのすべてがこんなに違うのか、と思ったり
できたらD問題もやりたい
コメントを残す