문 제

2차원 평면 위의 점 N개가 주어진다. 좌표를 x좌표가 증가하는 순으로, x좌표가 같으면 y좌표가 증가하는 순서로 정렬한 다음 출력하는 프로그램을 작성하시오.

입 력

첫째 줄에 점의 개수 N (1 ≤ N ≤ 100,000)이 주어진다. 둘째 줄부터 N개의 줄에는 i번점의 위치 xi와 yi가 주어진다. (-100,000 ≤ xi, yi ≤ 100,000) 좌표는 항상 정수이고, 위치가 같은 두 점은 없다.

5
3 4
1 1
1 -1
2 2
3 3

출 력

첫째 줄부터 N개의 줄에 점을 정렬한 결과를 출력한다.

1 -1
1 1
2 2
3 3
3 4

코 드

using System;
using static System.Console;
using System.IO;
using System.Linq;

namespace algorithm
{
    class Coordinate
    {
        public int x { get; set; }
        public int y { get; set; }
    }

    class Program
    {
        static void Main(string[] args)
        {
            StreamWriter writer = new StreamWriter(OpenStandardOutput());
            StreamReader reader = new StreamReader(OpenStandardInput());

            int N = int.Parse(reader.ReadLine());

            var inputList = Enumerable.Range(0, N)
                                    .Select(_ =>
                                    {
                                        var values = reader.ReadLine().Split(' ');

                                        return new Coordinate
                                        {
                                            x = int.Parse(values?[0] ?? "0"),
                                            y = int.Parse(values?[1] ?? "0")
                                        };
                                    })
                                    .ToList();

            var sortList = inputList.OrderBy(i => i.x).ThenBy(j => j.y).ToList();

            foreach (var coordinate in sortList)
                writer.WriteLine($"{coordinate.x} {coordinate.y}");

            writer.Close();
            reader.Close();
        }
    }
}

비교코드 - 1


공 부