ABC過去問098

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

コメントを残す

メールアドレスが公開されることはありません。