이우의 개발일지
[백준/C++] 11650번 좌표 정렬하기 본문
백준 1650번 좌표 정렬하기
https://www.acmicpc.net/problem/11650
어려웠던 점 1 이중 벡터 값 집어넣기
vector안에 값을 넣는 건 어렵지 않지만, 이중벡터는 꽤나 난처하게 다가왔다.
밑에 요것저것 시도했던 흔적...
vector range가 넘었다는 에러가 많이 떴다... 어케하지 했을 때 지피티 형님이 잘알려주었다.
그냥 단순히 가로 하나 추가해주면 된다는 사실...
vec.push_back({num1,num2}); ㅋㅋ 쉽네요,,
실패 코드
vec[i][0] = num1;
// vec[i][1] = num2;
/*vec.push_back(make_pair(num1, num2));
vec[i].push_back(num1);
vec[i].push_back(num2);*/
해결 코드
vector<vector<int>> vec;
for (int i = 0; i < n; i++) {
int num1, num2;
cin >> num1 >> num2;
//m1[num1] = num2;
vec.push_back({ num1, num2 });
}
어려웠던 점 2 Sort 이중 벡터 정렬하기
sort함수는 많이 써왔지만, 이중 벡터에서 sort는 컴파일이 되지 않았다.
찾아보니 사용자 정의함수를 많이 쓴다고 해서 그렇게 시도해보았다.
sort(vec.begin(), vec.end(), [](const vector<int>& a, const vector<int>& b) {
if (a[0] != b[0])
return a[0] < b[0]; // 첫 번째 요소가 다르면 첫 번째 요소로 정렬
return a[1] < b[1];
});
함수 코드는 처음 보는 유형일 수도 있겠지만, 밑에 따로 정리해놓은 글을 보면 편할 것이다.
이렇게 사용자 정의함수를 통해 내림차순 설정, 이차원 배열의 두번째 요소로 오름차순 등 여러 조건을 설정할 수 있는 람다 함수가 있다고 한다.
#include <string>
#include <vector>
#include <iostream>
#include <algorithm>
#include<map>
using namespace std;
int main() {
cin.tie(0);
ios_base::sync_with_stdio(0);
int n;
cin >> n;
vector<vector<int>> vec;
for (int i = 0; i < n; i++) {
int num1, num2;
cin >> num1 >> num2;
//m1[num1] = num2;
vec.push_back({ num1, num2 });
}
sort(vec.begin(), vec.end(), [](const vector<int>& a, const vector<int>& b) {
if (a[0] != b[0])
return a[0] < b[0]; // 첫 번째 요소가 다르면 첫 번째 요소로 정렬
return a[1] < b[1];
});
for (int i = 0; i < n; i++) {
//cout
cout << vec[i][0] << " " << vec[i][1] << '\n';
}
}
반응형
'Coding' 카테고리의 다른 글
[백준/C++] 1181번 단어 정렬 - sort (1) (0) | 2024.05.23 |
---|---|
[프로그래머스/c++] 달리기 경주 코딩 문제 (0) | 2024.05.21 |
[백준/C++] 11723번 집합 - (1) (배열 사이즈, deque 사이즈 변동) (0) | 2024.05.20 |
[프로그래머스/C++] PCCE 기출문제 10번 - 데이터 분석 - (1 swap, 변수 줄이기) (0) | 2024.05.20 |
[백준/C++] 11659번 구간 합 구하기 4 (DP) (0) | 2024.05.19 |