🙆‍♀️

C#で二次元配列をソートする。

2023/01/08に公開約1,400字

https://paiza.jp/works/mondai/c_rank_level_up_problems/c_rank_sort_step3

paizaラーニングの二次元配列をソートする問題です。
pythonなら数行で終わるのですが、、、C#で難航したのでメモです。

Python バージョン

sample.py
n = int(input())
ab = [None]*n

for i in range(n):
    [a, b] = input().split()
    a = int(a)
    b = int(b)
    ab[i] = [a, b]
    
ab.sort(reverse=True)

for i in range(n):
    [a, b] = ab[i]
    print(a, b)

C#バージョン

sample.cs
using System;
using System.Collections;
using System.Collections.Generic;
using System.Linq;


class Program
{
    static void Main()
    {
        int n = int.Parse(Console.ReadLine());
        // 2次元listの定義
        var list = new List<List<int>>();
        // listに要素を代入する
        for (int i = 0; i < n; i++)
        {
            // 1次元の要素の配列
            var rowArr = Console.ReadLine().Split(' ');
            // i 行目の要素に List を作成する
            list.Add(new List<int>());

            //2次元listに要素を追加
            list[i].Add(int.Parse(rowArr[0]));
            list[i].Add(int.Parse(rowArr[1]));
        }

        // List を配列に変換する
        var array = list.Select(line => line)
                              .Select(line_child => line_child.ToArray())
                              .ToArray();
        // ソートする
        Array.Sort(array, StructuralComparisons.StructuralComparer);
        Array.Reverse(array);

        // 出力
        for (int i = 0; i < n; i++)
        {
            Console.WriteLine($"{array[i][0]} {array[i][1]}");
        }
    }
}

Discussion

ログインするとコメントできます