package main import ( "fmt" "time" ) func main() { const year = 2015 daysOfMonth := []int{ 31, time.Date(year, time.March, 1, 0, 0, 0, 0, time.UTC).AddDate(0, 0, -1).Day(), 31, 30, 31, 30, 31, 31, 30, 31, 30, 31, } tab := makeSuujiWaTab() ans := 0 for month := 1; month <= 12; month++ { maxdays := daysOfMonth[month-1] for day := 1; day <= maxdays; day++ { if month == tab[day-1] { ans++ } } } fmt.Println(ans) } func makeSuujiWaTab() []int { const maxdays = 31 tab := make([]int, maxdays) for day := 1; day <= maxdays; day++ { sum := 0 for _, c := range fmt.Sprintf("%d", day) { sum += int(c - 48) } tab[day-1] = sum } return tab }