【C#】AtCoder Beginner Contest180 B - Various distances をC#で解いてみた【AtCoder】

※この解答は個人の見解の為、参考程度にご覧ください。


f:id:tomdokkk:20201030220208p:plain


〇解答例

static void Main(string[] args){

var N = int.Parse(Console.ReadLine());
//LinQでLong型のIEnumarableクラスを作成する
var X = Console.ReadLine().Split(' ').Select(e => long.Parse(e));

//マンハッタン距離、ユークリッド距離、チェビシェフ距離を格納する変数を作成
long mh = 0; long yu = 0; long ch = 0;

foreach(var item in X)
{
   //Xに格納した値の絶対値を順番に取り出す
   var i = Math.Abs(item);

 //マンハッタン距離:地点Aから地点Bまで、碁盤の目に沿ったかのような距離
 //カクカクしている  ※詳しくはググってね
 //計算方法:値を後ろへ順番に加算する
   mh += i;

 //ユークリッド距離:一番メジャーな距離。地点Aから地点Bまでの直線距離を平方根の原理を使って算出
   //計算方法:値を累乗したものを後ろへ順番に加算し、合計を平方根で計算する
   yu += i * i;

 //チェビシェフ距離:地点Aから地点Bまで、チェスや将棋のようにマス目移動するかのような距離
   //つまりファイアーエムブレム
 //計算方法:Math.Max()を使い、入力した引数の最大値をとる
   ch = Math.Max(ch, i);

}

Console.WriteLine(mh); //マンハッタン距離を出力
Console.WriteLine(Math.Sqrt(yu)); //Math.Sqrtを使って平方根を計算してユークリッド距離を出力
Console.WriteLine(ch); //チェビシェフ距離を出力

}