상세 컨텐츠

본문 제목

[프로그래머스 1단계] [PCCE 기출문제] 10번 / 데이터 분석 - c++

알고리즘/프로그래머스 1단계

by 셉인 2024. 3. 7. 13:53

본문

728x90

[프로그래머스/1단계] [PCCE 기출문제] 10번 / 데이터 분석 - c++ 

정답률이 되게 낮은 문젠데 다른 문제들보다 오히려 쉽게 풀렸다. 

 

풀이방법

 

사실 조건이 다 나와있지 않아서 처음에는 어렵게 다가왔다. 

날짜는 무조건 작은게 맞지만 다른 것들은 작아야하는지 .. 커야하는지 .. 안나와있어서 도박식으로 다 작다고 조건을 넣었다.

1. val_ext 조건에 맞는 데이터만 answer에 넣어준다.

2. 그 뒤 전역변수 num을 선언해줘서 내가 원하는 정렬 조건(sort_by)을 num에 넣어서 만들어준다.

3. num에 들어간 수를 바탕으로 index어디가 기준인지에 따라서 정렬해준다.

bool compare(vector<int>& a, vector<int>& b) {
    return a[num] < b[num];
}

vector의 경우는 이렇게 compare함수를 만들 수 있다.

4. 그 뒤 정렬해주면 된다.

 

전체 코드 

#include <string>
#include <vector>
#include <algorithm>

using namespace std;

int num = 0;

bool compare(vector<int>& a, vector<int>& b) {
    return a[num] < b[num];
}

vector<vector<int>> solution(vector<vector<int>> data, string ext, int val_ext, string sort_by) {
    vector<vector<int>> answer;
    
    // 조건에 맞는 데이터만 answer에 추가
    for (int i = 0; i < data.size(); i++) {
        if (ext == "code" && data[i][0] < val_ext) {
            answer.push_back(data[i]);
        }
        else if (ext == "date" && data[i][1] < val_ext) {
            answer.push_back(data[i]);
        }
        else if (ext == "maximum" && data[i][2] < val_ext) {
            answer.push_back(data[i]);
        }
        else if (ext == "remain" && data[i][3] < val_ext) {
            answer.push_back(data[i]);
        }
    }

    // 정렬 기준에 따라 num 설정
    if (sort_by == "code") {
        num = 0;
    }
    else if (sort_by == "date") {
        num = 1;
    }
    else if (sort_by == "maximum") {
        num = 2;
    }
    else if (sort_by == "remain") {
        num = 3;
    }

    // 정렬
    sort(answer.begin(), answer.end(), compare);

    return answer;
}

 

[프로그래머스/1단계] [PCCE 기출문제] 10번 / 데이터 분석 - c++ 

정답률 49%

728x90

관련글 더보기

댓글 영역