Notice
Recent Posts
Link
«   2024/11   »
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
Archives
관리 메뉴

이우의 개발일지

[백준/C++] 11650번 좌표 정렬하기 본문

Coding

[백준/C++] 11650번 좌표 정렬하기

공대이우 2024. 5. 21. 22:07

백준 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];
		});

 

함수 코드는 처음 보는 유형일 수도 있겠지만, 밑에 따로 정리해놓은 글을 보면 편할 것이다. 

이렇게 사용자 정의함수를 통해 내림차순 설정, 이차원 배열의 두번째 요소로 오름차순 등 여러 조건을 설정할 수 있는 람다 함수가 있다고 한다. 

 

 

[STL] sort 정렬 함수 사용 방법/ 사용자 정의 비교 함수 사용/오름차순 내림차순 코드

Sort 정렬 함수 오름차순정렬함수 sort는 주어진 숫자들을 오름차순으로 정렬해주는 함수입니다.코딩테스트 문제를 풀 때 유용하게 쓰이는 함수이죠. 시간 복잡도는 O(nlogn)입니다.  sort 기본 사

everything.pipelineleewoo.com

 

 

#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';
	}

}

 

반응형