반응형
Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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
- 그리디
- 백준알고리즘
- 문자열
- C
- 프로그래머스sql
- 해시를사용한집합과맵
- 자료구조
- 구현
- 소수판정
- 다이나믹프로그래밍
- 정렬
- 브루트포스알고리즘
- 논문구현
- 사칙연산
- C언어
- SQL
- 정수론
- 프로그래머스코딩테스트
- 그리디알고리즘
- 이진탐색
- 이분탐색
- 프로그래머스
- Image Classification
- 백준
- MySQL
- 수학
- 큐
- C++
- 프로그래머스연습문제
- 논문리뷰
Archives
- Today
- Total
초보 개발자의 이야기, 릿허브
[C++] 백준 11561번 좌표 정렬하기 2 본문
728x90
반응형
1. 문제이해
https://www.acmicpc.net/problem/11651
2차원 평면위의 좌표들을 y좌표가 증가하는 순으로,
y좌표가 같다면 x좌표가 증가하는 순으로 정렬하는 프로그램을 구현하는 것이 목표이다.
2. 문제풀이
2차원 평면 좌표를 y좌표 순으로 정렬하되, y좌표가 같다면 x좌표 순으로 정렬하는 것이 목표이다.
이전에 풀이한 11650번 좌표 정렬하기와 흡사한 문제이다.
해당 문제에서는 x좌표 순으로 정렬해줬다면, 이번 문제는 y좌표 순으로 정렬해준다는 차이가 있다.
이전 풀이한 문제의 cmp 함수에서 y좌표 순으로 정렬, 같으면 x좌표 순으로 정렬한다는 점만 수정해주면 된다.
자세한 풀이 방법은 아래 포스팅을 참고하자.
https://beginnerdeveloper-lit.tistory.com/110
3. 소스코드
#include <iostream>
#include <algorithm>
using namespace std;
class coordinate {
public:
int x; // x좌표
int y; // y좌표
};
bool cmp(coordinate a, coordinate b) {
// y좌표가 증가하는 순으로 정렬하되,
// y좌표가 같으면 x좌표가 증가하는 순서대로 정렬
if (a.y == b.y) {
return a.x < b.x;
}
else {
return a.y < b.y;
}
}
coordinate* c = new coordinate[100000];
int main() {
int N;
int numx, numy;
cin >> N;
for (int i = 0; i < N; i++) {
cin >> c[i].x >> c[i].y;
}
stable_sort(c, c + N, cmp);
for (int i = 0; i < N; i++) {
cout << c[i].x << " " << c[i].y << "\n";
}
return 0;
}
bool cmp 함수의 부분만 살짝 수정해주었다.
y좌표가 같다면, x좌표가 증가하는 순서대로 정렬, ( if (a.y == b.y) { return a.x < b.x; } )
같지 않다면, y좌표가 증가하는 순서대로 정렬되도록 했다. ( else { return a.y < b.y; } )
문제에 대한 질문이나 지적은 언제나 감사히 받고 있습니다.😊
728x90
반응형
'코딩테스트 > 📗 백준 (BOJ)' 카테고리의 다른 글
[C++] 백준 13022번 늑대와 올바른 단어 (0) | 2022.02.07 |
---|---|
[C++] 백준 1158번 요세푸스 문제 (0) | 2022.02.04 |
[C++] 백준 1912번 연속합 (0) | 2022.02.01 |
[C++] 백준 2581번 소수 (0) | 2022.01.30 |
[C++] 백준 15903번 카드 합체 놀이 (0) | 2022.01.29 |