package main import ( "bufio" "fmt" "math" "os" "strconv" "strings" ) // エントリポイント func main() { in := bufio.NewScanner(os.Stdin) // アンケートに回答するユーザー数 in.Scan() input1 := in.Text() // 各ユーザーの回答したレベル in.Scan() input2 := in.Text() fmt.Println(majorityVote(input1, input2)) } // 多数決で一番多いレベルを返す。 func majorityVote(userCount string, vote string) string { iUserCount, _ := strconv.Atoi(userCount) // 配列のサイズを変数で指定することはできないため、スライスを使用する。 // 配列の定義 voteList := [iUserCount]int{} // エラー non-constant array bound iUserCount voteList := make([]int, iUserCount) sp := strings.Split(vote, " ") for _, v := range sp { index, _ := strconv.Atoi(v) voteList[index+1]++ } // 配列の中で一番大きい数値のインデックスを返す。 maxIndex := 0 maxNum := 0 for i := 0; i < len(voteList); i++ { if voteList[i] > maxNum { maxIndex = i maxNum = voteList[i] } } // 配列の右からレベルの高い順になっている。 return strconv.Itoa(int(math.Abs(float64(iUserCount - maxIndex)))) }