Go言語で競プロの問題を解く

練習したのを貼る。

雰囲気はこんな感じ。AtCoder Contest 053 D問題の解答。言語に関しては競プロの解答が書けるために必要な知識は少ない。練習にはちょうどいいが、これくらいでは Go 言語できますって言える気がしない。

package main

import (
    "fmt"
)

func main() {
    var n int
    fmt.Scan(&n)
    a := make([]int, n)
    for i := range a {
        fmt.Scan(&a[i])
    }
    counter := make(map[int]int)
    for _, v := range a {
        counter[v]++
    }
    evenCount := 0
    for _, v := range counter {
        if v%2 == 0 {
            evenCount++
        }
    }
    answer := len(counter)
    if evenCount%2 == 1 {
        answer--
    }
    fmt.Println(answer)
}