C++/programmers 코딩테스트(level 0) C++

[C/C++] programmers Level 0 특이한 정렬

CE : 하랑 2023. 10. 4. 14:03

 

 

 

 

 

코드

 

#include <vector>
#include <algorithm> // sort()
#include <cmath>  // abs()

using namespace std;

int check;

bool compare(int prev, int next) { // 정렬되는 순서는 true가 되는 규칙을 따른다.
    if (abs(prev - check) == abs(next - check)){ // check=n, n의 값의 차이가 같을 때
        return prev > next; // prev > next 참이면 1, 거짓이면 0 반환 ->  prev 가 next 보다 클 경우 sort 실시 내림차순 정렬
    }
    
    return abs(prev - check) < abs(next - check);  // abs(prev - check) < abs(next - check) 창이면 1, 거짓이면 0 -> 참일시 sort 실시 오름차순 정렬
}

vector<int> solution(vector<int> numlist, int n) {
    vector<int> answer;
    check=n;
    sort(numlist.begin(), numlist.end(), compare); // sort 함수에 compare 함수를 인식, 자동으로 앞에서 수 prev, 뒤의 수 next를 넣어줌
    
    return answer=numlist;
}