package main import ( "bufio" "fmt" "math" "os" ) // エントリポイント func main() { in := bufio.NewScanner(os.Stdin) // 地図に書かれた方角。NEWSのみ。 in.Scan() input1 := in.Text() fmt.Println(treasureHunt(input1)) } // 宝の位置までの最短の距離を返す。 func treasureHunt(direction string) string { // 0:NS, 1:EW dirCount := [2]int{} for _, c := range direction { switch string(c) { case "N": // 北 dirCount[0]++ case "S": //南 dirCount[0]-- case "E": // 東 dirCount[1]++ case "W": // 西 dirCount[1]-- } } // 南東(NE) ne := math.Pow(float64(dirCount[0]), 2) // 北西(SW) sw := math.Pow(float64(dirCount[1]), 2) return fmt.Sprintf("%f", math.Sqrt(ne+sw)) }