https://school.programmers.co.kr/learn/courses/30/lessons/120880
일단 모든 원소에서 n을 뺀다. 모든 원소 하나하나 비교해가면서 값을 비교해서 스왑해주고 다 정렬되면 다시 n을 더해준다.
#include <string>
#include <vector>
#include <cmath>
using namespace std;
vector<int> solution(vector<int> numlist, int n) {
vector<int> answer;
vector<int> a;
for(int i = 0; i < numlist.size(); i++)
{
numlist[i] -= n;
}
for(int i = 0; i < numlist.size() - 1; i++)
{
for(int j = i + 1; j < numlist.size(); j++)
{
if(abs(numlist[i]) > abs(numlist[j]))
swap(numlist[i],numlist[j]);
else if (abs(numlist[i]) == abs(numlist[j]))
{
if(numlist[i] < numlist[j])
swap(numlist[i],numlist[j]);
}
}
}
for(int i = 0; i < numlist.size(); i++)
{
numlist[i] += n;
}
answer = numlist;
return answer;
}
#include <string>
#include <vector>
#include <algorithm>
#include <cmath>
using namespace std;
int num;
bool compare(int prev, int next) {
if (abs(prev - num) == abs(next - num))
return prev > next;
return abs(prev - num) < abs(next - num);
}
vector<int> solution(vector<int> numlist, int n) {
num = n;
sort(numlist.begin(), numlist.end(), compare);
return numlist;
}
sort함수에서 원하는 결과를 위해 커스텀 함수를 넣을수 있다는걸 몰랐었다. 자주 쓰일 기능인것 같다.