Notice
Recent Posts
Recent Comments
Link
«   2024/12   »
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
Tags more
Archives
Today
Total
관리 메뉴

개발자 일기장.

백준 11650문제. 본문

취업/Algorithm.

백준 11650문제.

Azderica 2020. 2. 15. 22:44

좌표 정렬하기

 


Problem?

2차원 평면 위의 점 N개가 주어진다. 좌표를 x좌표가 증가하는 순으로, x좌표가 같으면 y좌표가 증가하는 순서로 정렬한 다음 출력하는 프로그램을 작성하시오.

쉬운 문제 스타일, C++ vector 연습용

 

Input

첫째 줄에 점의 개수 N (1 ≤ N ≤ 100,000)이 주어진다. 둘째 줄부터 N개의 줄에는 i번점의 위치 xi와 yi가 주어진다. (-100,000 ≤ xi, yi ≤ 100,000) 좌표는 항상 정수이고, 위치가 같은 두 점은 없다.

 

Output

첫째 줄부터 N개의 줄에 점을 정렬한 결과를 출력한다.

 

Solution

정렬을 쓰자.

 

가정

Pos : 위치 구조체

dot : input

 

Code

#include	<iostream>
#include	<algorithm>
#include	<vector>
using namespace std;

struct Pos {
	int x;
	int y;
};

bool comp(const Pos& a, const Pos& b) {
	if (a.x == b.x)
		return a.y < b.y;
	return a.x < b.x;
}

int main(void) {
	int N;
	Pos tmp;
	vector<Pos> dot;
	
	scanf("%d", &N);
	for (int i = 0; i < N; i++) {
		scanf("%d %d", &tmp.x, &tmp.y);
		dot.push_back(tmp);
	}

	sort(dot.begin(), dot.end(), comp);

	for (int i = 0; i < N; i++) {
		printf("%d %d\n", dot[i].x, dot[i].y);
	}

	return 0;
}

 


vector에 얼른 익숙해지기.

'취업 > Algorithm.' 카테고리의 다른 글

백준 11053문제.  (0) 2020.02.23
백준 1074문제.  (0) 2020.02.22
백준 10250문제.  (0) 2020.02.12
백준 1912문제.  (0) 2020.02.11
백준 2156문제.  (0) 2020.02.09