[프로그래머스] LV1. [PCCE 기출문제] 10번 / 데이터 분석
#include <string>
#include <vector>
#include <algorithm>
using namespace std;
int sort_index = 0;
bool compared(vector<int> &a, vector<int> &b){
return a[sort_index] < b[sort_index];
}
vector<vector<int>> solution(vector<vector<int>> data, string ext, int val_ext, string sort_by) {
vector<vector<int>> answer;
string title[4] = {"code", "date", "maximum", "remain"};
int ext_index = 0;
for(int i = 0; i < 4; i++){
if(ext == title[i]){
ext_index = i;
}
if (sort_by == title[i]){
sort_index = i;
}
}
for(int i = 0; i < data.size(); i++){
if (data[i][ext_index] < val_ext){
answer.push_back(data[i]);
}
}
sort(answer.begin(), answer.end(), compared);
return answer;
}
sort_index - 정렬해야하는 기준이 위치한 인덱스 저장. 외부 함수에서도 사용하기 위해 전역변수 선언.
ext_index - 큰 값을 없애는데 사용하기 위해 저장.
title[4] - string 제목 순서대로 저장하여 index를 찾는데 사용.
compared() sort 정렬을 할 때 사용하려고 만듦.
for문으로 0-3변화하며 sort_index, ext_index를 찾는다.
for문으로 data를 돌며 val_ext보다 작은 값을 answer에 저장한다.
sort를 사용하여 정렬한다. 정렬을 할때 위에 생성한 compared함수를 사용한다.
compared함수는 sort_index를 비교해서 a, b중 작은 것을 bool로 알려준다.