
#include <string>
#include <vector>
#include <algorithm>
using namespace std;
vector<vector<int>> solution(vector<vector<int>> data, string ext, int val_ext, string sort_by)
{
vector<vector<int>> answer;
int index_ext = 0;
int index_sort_by = 0;
vector<string> m_vecFindIndex = { "code", "date", "maximum", "remain" };
auto iter_ext = find(m_vecFindIndex.begin(), m_vecFindIndex.end(), ext);
auto iter_sort_by = find(m_vecFindIndex.begin(), m_vecFindIndex.end(), sort_by);
if (iter_ext != m_vecFindIndex.end())
{
index_ext = static_cast<int>(distance(m_vecFindIndex.begin(), iter_ext));
}
if (iter_sort_by != m_vecFindIndex.end())
{
index_sort_by = static_cast<int>(distance(m_vecFindIndex.begin(), iter_sort_by));
}
for(auto& iter : data)
{
if(iter[index_ext] < val_ext)
{
answer.push_back(iter);
}
}
sort(answer.begin(), answer.end(), [&](vector<int> _a, vector<int> _b)
{
return _a[index_sort_by] <_b[index_sort_by];
});
return answer;
}
문제 풀이 접근 순서
1. 해당 문제에서 어떠한 기준값을 기준으로 비교를 한 뒤 또 다른 기준값을 이용하여 오름차순으로 정리하라 하여 sort 알고리즘
을 생각함
2. ext 와 sort_by 값이 각각 경우의 수가 다 합쳤을 때 16가지 이므로 if문으로 하기에는 코드가 너무 길어질 수 있으므로
vector의 find와 distance 함수를 활용하여 index를 구해 pred 문을 작성하기로 생각
3. 해당 값은 sort 알고리즘의 람다 함수을 적용시켜 각각의 경우의 마다의 정렬이 되도록 구현함.
'Coding Test > Sort' 카테고리의 다른 글
| 프로그래머스 [Level2] 전화번호 목록 [Sort, Hash] (0) | 2025.11.09 |
|---|---|
| 프로그래머스 [Level1] 달리기 경주 (0) | 2025.11.04 |
| 백준 1427번 소트인사이드 (0) | 2025.11.04 |
| 백준 1181번 단어 정렬 ( Sort 알고리즘 활용) (0) | 2025.11.03 |