서두르지 말고 쉬지 말자

백준 11650번 좌표 정렬하기 (C++) 본문

코딩 공부/Baekjoon Problem Solving

백준 11650번 좌표 정렬하기 (C++)

philos 2025. 7. 14. 14:58

solved.ac 티어 : 실버5

문제 유형 : 정렬

문제 해결 소감 : array랑 sort를 사용해서 문제를 해결했고 함수 포인터에 대한 개념도 학습을 다시 했다. C++ primer책으로 좀 제대로 공부하고 싶은데 이렇게 하니까 나름 공부가 되는 것 같다.

문제 해결 전략 : std::sort를 사용해서 했기 때문에 사실상 문제 그대로 구현했다.

#include <algorithm>
#include <array>
#include <iostream>
#include <vector>
int n;
int xi = 0, yi = 0;
std::array<int, 2> temparr;
std::vector<std::array<int, 2>> v;
bool comp(const std::array<int, 2> &n1, const std::array<int, 2> &n2);
int main(void) {
  std::cin >> n;
  for (int i = 0; i < n; i++) {
    std::cin >> xi >> yi;
    temparr.at(0) = xi;
    temparr.at(1) = yi;
    v.push_back(temparr);
  }
  std::sort(v.begin(), v.end(), comp);
  for (int i = 0; i < n; i++) {
    std::cout << v[i].at(0) << " " << v[i].at(1) << '\n';
  }
}

bool comp(const std::array<int, 2> &n1,
          const std::array<int, 2>
              &n2) {  // true 반환하면 첫번째 매개변수가 두번째 매개변수보다 앞에 오게 정렬됨
  if (n1.at(0) == n2.at(0)) {
    return n1.at(1) < n2.at(1);
  } else
    return n1.at(0) < n2.at(0);
}
반응형