[프로그래머스] 데이터 분석



Programmers - [PCCE 기출문제] 데이터 분석




사용 언어 - C++

소요 시간 - 25분

정답 여부 - O




문제 링크 : https://school.programmers.co.kr/learn/courses/30/lessons/250121



문제 요약

  1. code, date, maximum, remain 순으로 나열된 배열을 담은 이차원 배열 data가 주어짐
  2. 저장할 데이터를 뽑아내기 위한 기준, 문자열 정보 ext
  3. 정보의 기준 값을 나타내는 정수 val_ext
  4. 정보를 정렬할 기준이 되는 문자열 sort_by가 주어짐
  5. 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;
}




트러블 슈팅

  1. algorithm 헤더의 sort 함수를 사용하려는데 이차원 배열에 적용하는 것은 처음이어서 조금 헤맴




문제 풀이 후 소감

  • 확실히 STL에서 제공하는 함수의 사용법을 잘 익혀야겠다는 생각이 들었다. C++로 코테를 풀 때 STL에서 제공하는 함수가 푸는 시간이나 실행 시간을 좌우하는 것 같다.(⭐물론 그 함수가 어떻게 동작하는지 정도는 파악하고 있어야 한다고 생각한다)