https://www.acmicpc.net/problem/11650
이번에는 지난번 다른 문제에서 상위권분이 푸신 방법을 공부하여 응용해 보았다.
Array.Sort의 오버로드 중, Sort(Array, IComparer)이라고 생각되었다.
다른 문제에서 효과적이었던 방법으로 해결하였지만, 기대에 비해 시간이 많이 들었다.
상위권 코드를 보니 Heap과 Struct로 굉장히 효과적으로 푼 코드였다.
다 아는 개념이지만, 지금까지의 나는 이렇게 적재적소에 활용하지는 못했다고 생각이 들었다.
그렇기에 다른 분들의 코드를 많이 보면서 공부하고 더 발전해야겠다!
단순히 백준 알고리즘으로 끝나는 것이 아니라, 실제 작업에도 활용할 수 있는 방식을 배워나가고 싶다.
using System;
using System.Security.Cryptography.X509Certificates;
using System.Text;
namespace B11650
{
class Program
{
class Coordinate
{
public int x { get; set; }
public int y { get; set; }
}
static void Main()
{
StreamReader sr = new StreamReader(Console.OpenStandardInput());
StreamWriter sw = new StreamWriter(Console.OpenStandardOutput());
StringBuilder sb = new StringBuilder();
int n = int.Parse(sr.ReadLine());
Coordinate[] array = new Coordinate[n];
for(int i= 0; i < n; i++)
{
int[] xy = Array.ConvertAll(sr.ReadLine().Split(' '), int.Parse);
array[i] = new Coordinate { x = xy[0], y = xy[1] };
}
//정렬하기
Array.Sort(array, (Coordinate a, Coordinate b) =>
{
if (a.x == b.x) return a.y.CompareTo(b.y);
else
{
if (a.x > b.x) return 1;
else if (a.x < b.x) return -1;
else return 0;
}
});
foreach(Coordinate c in array)
sb.Append(c.x + " " + c.y + "\n");
sw.Write(sb);
sr.Close();
sw.Flush();
sw.Close();
}
}
}
'알고리즘 > 백준 BOJ' 카테고리의 다른 글
[ BOJ/C# ] 9012 괄호 (0) | 2023.10.01 |
---|---|
[ BOJ/C# ] 11866 요세푸스 문제 0 (0) | 2023.09.30 |
[ BOJ/C# ] 10814 나이순 정렬 (0) | 2023.09.29 |
[ BOJ/C# ] 1181 단어 정렬 (0) | 2023.09.28 |
[ BOJ/C# ] 1260 DFS와 BFS (0) | 2023.09.26 |