IDEA
처음 봤을 때는 쉬운 정렬 문제구나 했다. 리스트를 만들었고 그냥 정렬해서 출력했다. 대신 List<(int, int)> 형식의 요소를 꺼내올 때 하나씩 따로 꺼내오는 걸 몰라서 지저분하게 String 메소드를 이것저것 갖다 붙이게 됐다. 너무 맘에 안들어..하던 와중에 2차원 배열의 정렬 방법을 다른 분의 코드에서 찾았다. 리스트에서 특정 항목을 기준으로 배열하는 방법인데 엑셀에서 필터 적용하는 것과 비슷한 개념인 것 같다. 아직 람다식은 제대로 공부하지 않아서 정확한 개념은 모른다. 그래도 써먹을 수 있는 건 써먹어야지. x좌표 순으로 먼저 오름차순 정렬하되 x좌표가 같다면 y좌표 기준으로 오름차순 정렬을 해야한다. 그러려면 먼저 y좌표로 오름차순 정렬을 끝내고 x좌표로 정렬해야한다.
CODE
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
class Program
{
static int N;
static StringBuilder sb = new StringBuilder();
static List<List<int>> dot = new List<List<int>>();
static void Main()
{
N = int.Parse(Console.ReadLine());
for(int i = 0; i < N; i++)
{
var xy = Console.ReadLine().Split();
dot.Add(new List<int> { int.Parse(xy[0]), int.Parse(xy[1]) });
}
foreach(var item in dot.OrderBy(x => x[1]).OrderBy(x => x[0]))
sb.AppendLine(item[0] + " " + item[1]);
// 여기서 람다식으로 정렬을 끝낸다.
// List.OrderBy(x => x[n])으로 표현된 람다식은
// List의 n번째 항목을 기준, 오름차순 정렬한다.
Console.WriteLine(sb);
}
}