package main import ( "bufio" "fmt" "os" "strconv" "strings" ) // エントリポイント func main() { in := bufio.NewScanner(os.Stdin) in.Scan() input1 := in.Text() input2 := make([]string, 0) for in.Scan() { input2 = append(input2, in.Text()) } fmt.Println(numbers(input1, input2)) } // 思い浮かべた数を判定して返す func numbers(line string, numList []string) string { _ = line // 0:初期値,1:NO,2:YES result := [10]int{} // 判定処理 for _, v := range numList { sp := strings.Split(v, " ") strAry := sp[0:len(sp)-1] yesNo := sp[len(sp)-1] // strAryを数値に変換 numAry := make([]int, 0) for _, v2 := range strAry { i, _ := strconv.Atoi(v2) numAry = append(numAry, i) } if yesNo == "NO" { for _, v2 := range numAry { result[v2] = 1 } } if yesNo == "YES" { // numAry にないものはすべて1 for i3, v3 := range result { if v3 == 0 || v3 == 2 { if existAry(numAry, i3) { result[i3] = 2 } else { result[i3] = 1 } } } } } // 結果を探す for i3, v3 := range result { if v3 == 2 { return strconv.Itoa(i3) } } for i4, v4 := range result { if v4 == 0 { return strconv.Itoa(i4) } } // ここには来ないはず return "" } // 配列内に値があるか判定する。 func existAry(intAry []int, i int) bool { for _, v := range intAry { if v == i { return true } } return false }