[프로그래머스] 데이터 분석
Programmers - [PCCE 기출문제] 데이터 분석
사용 언어 - C++
소요 시간 - 25분
정답 여부 - O
문제 링크 : https://school.programmers.co.kr/learn/courses/30/lessons/250121
문제 요약
- code, date, maximum, remain 순으로 나열된 배열을 담은 이차원 배열 data가 주어짐
- 저장할 데이터를 뽑아내기 위한 기준, 문자열 정보 ext
- 정보의 기준 값을 나타내는 정수 val_ext
- 정보를 정렬할 기준이 되는 문자열 sort_by가 주어짐
- data에서 ext 값이 val_ext 보다 작은 데이터들을 뽑아 sort_by에 해당하는 값을 기준으로 오름차순 정렬하여 return
최종 코드
#include <string>
#include <vector>
#include <algorithm>
using namespace std;
int ext_type = -1;
int sort_type = -1;
int FindIndex(string InString)
{
if(InString == "code")
return 0;
else if(InString == "date")
return 1;
else if(InString == "maximum")
return 2;
else if(InString == "remain")
return 3;
}
bool Compare(const vector<int>& a, const vector<int>& b)
{
return a[sort_type] < b[sort_type];
}
vector<vector<int>> solution(vector<vector<int>> data, string ext, int val_ext, string sort_by) {
vector<vector<int>> answer;
ext_type = FindIndex(ext);
sort_type = FindIndex(sort_by);
for(int i = 0; i < data.size(); i++)
{
if(data[i][ext_type] <= val_ext)
answer.push_back(data[i]);
}
sort(answer.begin(), answer.end(), Compare);
return answer;
}
트러블 슈팅
- algorithm 헤더의 sort 함수를 사용하려는데 이차원 배열에 적용하는 것은 처음이어서 조금 헤맴
문제 풀이 후 소감
- 확실히 STL에서 제공하는 함수의 사용법을 잘 익혀야겠다는 생각이 들었다. C++로 코테를 풀 때 STL에서 제공하는 함수가 푸는 시간이나 실행 시간을 좌우하는 것 같다.(⭐물론 그 함수가 어떻게 동작하는지 정도는 파악하고 있어야 한다고 생각한다)