이번 문제는 생각보다 짱빨리 풀어버렸고, 새로운 개념을 하나 배워서 포스팅한다!

로직은 매우 단순함
1. x좌표 오름차순 정렬
2. x좌표가 같다면, y좌표 오름차순 정렬
바로 어제 벡터의 개념에 대해서 간단하게 배웠는데, 활용해 볼 아주 좋은 (?) 문제이다
| test case : n x increase if x same -> y increase priority 1. x increase 2. y increase easy declare 2 int type vectors or 1 int type 2dim vector 1 int type 2dim vector |
뭐 메모는 당연히 단순하게 작성되었다.
나의 고민은 나와있듯이
2개의 1차원 벡터를 사용할 것이냐
1개의 2차원 벡터를 사용해 볼 것이냐
후자를 골랐다. 이유는 뭐.. 언젠가는 더 고급 문제에서 사용해보자 해서 미리미리 뚜드려 맞자는 마인드였다
2차원 벡터를 선언하는 방법은 다음과 같다.
vector < vector <int>> v;
vector <int> v1;
벡터 안에 벡터가 들어가야 해서, v1은 임의로 선언해 뒀다. 2차원 배열이랑 크게 다를 건 없고, 도식화하면 아래와 같다.

간단하게 cin으로 각각 입력 받아서, sort함수 돌려줬다. 주의할 점은, sort함수를 쓸 때 배열처럼 sort(arr, arr+n)방식이 아니라, sort(v.begin(), v.end())로 시작과 끝을 int형태로 명시해준다
#include <algorithm>
#include <cmath> //C++
#include <iostream>
#include <math.h> //C
#include <string>
#include <vector>
using namespace std;
int main() {
ios_base::sync_with_stdio(false);
cin.tie(NULL);
cout.tie(NULL);
int n;
cin >> n;
vector <vector <int>> v(n);
vector <int> v1(2);
for(int i=0;i<n;i++){
cin >> v1[0] >> v1[1];
v[i].push_back(v1[0]);
v[i].push_back(v1[1]);
}
sort(v.begin(), v.end());
for(int i=0;i<n;i++){
cout << v[i][0] << ' ' << v[i][1] << '\n';
}
return 0;
}'공부기록 > [Algorithm]' 카테고리의 다른 글
| 백준 10816번 <숫자 카드 2> -C++ (0) | 2024.08.23 |
|---|---|
| 백준 1018번 <체스판 다시 칠하기> - C++ (3) | 2024.08.20 |
| 백준 2869번 <달팽이는 올라가고 싶다> - C++ (2) | 2024.08.17 |
| 백준 1181번 <단어 정렬> - C++ (2) | 2024.08.15 |
| 백준 2775번 <부녀회장이 될테야> - C++ (2) | 2024.08.12 |