◆C#/C# : 백준 문제 풀이
[백준] C++ & C# 좌표 정렬하기 (11650번)
진2_
2024. 9. 20. 21:08
728x90
반응형
[백준] C++ & C# 좌표 정렬하기 (11650번) 실버 5
📝 문제
2차원 평면 위의 점 N개가 주어진다. 좌표를 x좌표가 증가하는 순으로, x좌표가 같으면 y좌표가 증가하는 순서로 정렬한 다음 출력하는 프로그램을 작성하시오.
🔎 입력
첫째 줄에 점의 개수 N (1 ≤ N ≤ 100,000)이 주어진다.
둘째 줄부터 N개의 줄에는 각 점의 x좌표와 y좌표가 주어진다.
좌표는 절댓값이 100,000을 넘지 않는 정수이다.
🔎 출력
첫째 줄부터 N개의 줄에 점을 정렬한 결과를 출력한다.
🎀 입출력 예시
정답
C++
#include <iostream>
#include <algorithm> // sort 함수를 사용하기 위해 필요
#include <vector>
using namespace std;
int main(){
int n;
cin >> n;
vector<pair<int, int>> arr(n); // 좌표를 저장할 벡터(pair 사용)
// 좌표 입력
for(int i = 0; i < n; i++){
cin >> arr[i].first >> arr[i].second;
}
// 좌표 정렬: 기본적으로 x좌표를 기준으로 정렬되며, x좌표가 같으면 y좌표로 정렬
sort(arr.begin(), arr.end());
// 정렬된 좌표 출력
for (int i = 0; i < n; i++) {
cout << arr[i].first << " " << arr[i].second << '\n';
}
return 0;
}
C#
using System;
using System.Linq;
class Program
{
static void Main(string[] args)
{
int n = int.Parse(Console.ReadLine());
var points = new (int x, int y)[n];
for (int i = 0; i < n; i++)
{
var input = Console.ReadLine().Split();
points[i] = (int.Parse(input[0]), int.Parse(input[1]));
}
var sortedPoints = points.OrderBy(p => p.x).ThenBy(p => p.y);
foreach (var point in sortedPoints)
{
Console.WriteLine($"{point.x} {point.y}");
}
}
}
728x90
반응형