[공부] 백준 11650 좌표 정렬하기 C++
[공부] 백준 11650 좌표 정렬하기 C++
📝 문제
- 백준 11650 좌표 정렬하기
🔍 문제 상황
💡 해결 방법 / 접근 방식
- 해당 문제는 2차원 벡터(배열)을 사용하여야 하며, n개의 줄만큼 x,y 좌표를 받는 것이기에 행을 n으로, 열을 2로 잡아도 무관합니다.
- 저는 2차원 벡터를 사용하여 풀었으며, 입력을 받자마자 초기화를 시키기 위해
1
vector<vector<int>> v(n, vector<int>(2, 0));
- 를 하였고,
- 그 결과 아래와 같은 벡터가 생성됩니다.
1 2 3 4 5 6 7
v = [ [0, 0], [0, 0], [0, 0], [0, 0], [0, 0] ]
- 출처: https://developer-cat.tistory.com/17
접근 방식
- 그래서 위와 같이 2차원 벡터를 우선 생성 후, 입력을 받고, sort() 함수를 통해 배열을 오름차순으로 정리한 뒤, 벡터를 순서대로 출력하면 됩니다.
🛠️ 구현 코드
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
#include <iostream>
#include <vector>
#include <algorithm>
using namespace std;
int n;
int main() {
ios_base::sync_with_stdio(false);
cin.tie(NULL);
cout.tie(NULL);
cin >> n;
// m*2인 2차원 벡터를 0으로 초기화 하여 선언
// 참고: http://developer-cat.tistory.com/17
vector<vector<int> > v(n, vector<int>(2, 0));
for (int i = 0; i < n; ++i) {
for (int j = 0; j < 2; ++j) {
cin >> v[i][j];
}
}
sort(v.begin(), v.end());
for (int i = 0; i < n; ++i) {
for (int j = 0; j < 2; ++j) {
cout << v[i][j] << " ";
}
cout << "\n";
}
return 0;
}
🧷 결론
- 2차원 벡터의 행과 열을 이해하면 풀어내기 쉬운 문제이며, 굳이 벡터를 사용하지 않더라도 배열을 통해서도 풀 수 있을 것 같습니다.
- 추가적으로 2차원 벡터이기에, 중첩 for문을 사용하여 2차원 벡터를 출력해야합니다.
이 기사는 저작권자의 CC BY 4.0 라이센스를 따릅니다.