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問題もやりたい

















コメントを残す