[프로그래머스] LV1. [PCCE 기출문제] 10번 / 데이터 분석

윤인경·2024년 1월 23일
0

코딩테스트

목록 보기
38/38

문제 설명

[프로그래머스] 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로 알려준다.

profile
코딩 공부 및 프로젝트 정리

0개의 댓글