*문제 출처는 프로그래머스에 있습니다.
문제 제목: 특이한 정렬 (0단계)
문제 사이트: https://school.programmers.co.kr/learn/courses/30/lessons/120880
문제 설명
나의 풀이
#include <string>
#include <vector>
#include <algorithm>
using namespace std;
bool cmp(pair<int, int>& a, pair<int, int>& b) {
// n으로부터의 거리가 같다면 더 큰 수를 앞으로 오도록 배치한다.
if (a.second == b.second) return a.first > b.first;
// n으로부터의 거리가 가까운 수가 오도록 정렬한다.
return a.second > b.second;
}
vector<int> solution(vector<int> numlist, int n) {
vector<int> answer;
vector<pair<int, int>> number;
for (int i : numlist) {
if (i >= n)
number.push_back({ i, i - n });
else if (n > i)
number.push_back({ i, n - i });
}
sort(number.begin(), number.end(), cmp);
for (int j = 0; j < numlist.size(); j++) {
answer.push_back(number[j].first);
}
return answer;
}
※ 알아야 할 것
pair를 사용하면 쉽게 해결 할 수 있다.
'코딩테스트(프로그래머스 & 백준) > 프로그래머스-C++' 카테고리의 다른 글
Programmers / 피보나치 수 / C++ (0) | 2024.02.14 |
---|---|
Programmers / 다음 큰 숫자 / C++ (0) | 2024.02.14 |
Programmers / 올바른 괄호 / C++ (0) | 2024.02.07 |
Programmers / 이진 변환 반복하기 / C++ (0) | 2024.02.07 |
Programmers / 숫자 짝꿍 / C++ (0) | 2024.02.02 |