반응형
● 문제 접근 과정
1. 첫째 줄에 점의 개수 N (1 ≤ N ≤ 100,000)이 주어진다. 둘째 줄부터 N개의 줄에는 i번점의 위치 xi와 yi가 주어진다. (-100,000 ≤ xi, yi ≤ 100,000) 좌표는 항상 정수이고, 위치가 같은 두 점은 없다.
2.백터로 값을 받고, 해당 값을 sort 정렬 해주면 끝.
● 구현
#include <algorithm>
#include <iostream>
#include <vector>
using namespace std;
int main() {
int N;
cin >> N; // 사용자로부터 좌표 쌍의 개수 N을 입력 받음
vector<pair<int, int>> v; // pair<int, int> 형식의 좌표 쌍을 저장할 벡터 생성
/*
벡터는 동적 배열을 나타내며, 여러 값을 한 번에 저장하고 관리할 수 있는 유용한
데이터 구조 pair<int, int>는 두 개의 int형 값으로 이루어진 쌍을 의미합니다.
즉, pair<int, int>는 두 개의 정 수값을 저장하는 구조체입니다.
*/
// N개의 좌표 쌍을 입력 받아 벡터에 저장
for (int i = 0; i < N; i++) {
int x, y;
cin >> x >> y; // 좌표 쌍의 x값과 y값을 입력 받음
v.push_back({x, y}); // 입력 받은 좌표 쌍을 벡터에 추가
}
// 벡터 v를 x값을 기준으로 오름차순으로 정렬
sort(v.begin(), v.end());
// 정렬된 좌표 쌍을 출력
for (int i = 0; i < N; i++) {
cout << v[i].first << ' ' << v[i].second << '\n'; // 정렬된 좌표 쌍을 출력
}
return 0;
}
https://www.acmicpc.net/problem/11650
반응형