◆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
반응형