문 제
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