코드
#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;
}
'C++ > programmers 코딩테스트(level 0) C++' 카테고리의 다른 글
[C/C++] programmers Level 0 두 수의 합 (2) | 2023.10.07 |
---|---|
[C/C++] programmers Level 0 이진수 더하기 (0) | 2023.10.07 |
[C/C++] programmers Level 0 그림 확대 (0) | 2023.10.03 |
[C/C++] programmers Level 0 외계어 사전 (0) | 2023.10.03 |
[C/C++] programmers Level 0 구슬을 나누는 경우의 수 (2) | 2023.10.03 |