[C++로 풀이] 튜플 ⭐⭐
카테고리: Programmers
태그: Coding Test Algorithm
📌 튜플
난이도 ⭐⭐
🚀 문제
🚀 내 풀이 ⭕
#include <string>
#include <vector>
#include <algorithm>
#include <map>
using namespace std;
bool compare(pair<int, int> a, pair<int, int> b)
{
return a.second > b.second;
}
vector<int> solution(string s) {
vector<int> answer;
map<int, int> count;
string oneNumStr = "";
for(int i = 0; i < s.length() - 1; i++)
{
if (s[i] >= '0' && s[i] <= '9')
oneNumStr += s[i];
// 하나의 숫자가 다 끝난 경우 1. } 등장 2. , 등장이긴한데 앞에 숫자 있었을 때
if (s[i] == '}' || (s[i] == ',' && oneNumStr != ""))
{
count[stoi(oneNumStr)]++;
oneNumStr = "";
}
}
vector<pair<int, int>> sortByValue(count.begin(), count.end()); // count map을 vector sortByBalue에 복사
sort(sortByValue.begin(), sortByValue.end(), compare);
for(int i = 0; i < sortByValue.size(); i++)
answer.push_back(sortByValue[i].first);
return answer;
}
가장 많이 등장한 수가 가장 앞에 있는 인덱스의 원소가 될 것이다. 반대로 딱 한번 등장한 수는 가장 뒤에 있는 인덱스의 원소가 될 것이다.
count
map에Key : 원소
,Value : 등장 횟수
로 저장이 될 것이다.- Value를 기준으로한 내림 차순 정렬을 진행해야 한다. 👉 Key를 기준으로한 정렬은 가능하지만 Value 를 기준으로 한 map 자체의 정렬은 불가능하기에 pair를 원소로 하는 vector에 이 map의 Key와 Value를 모두 복사한 후 이 vector를 Value (second) 기준으로 내림차순 정렬하면 된다.
- 그리고 이 벡터의 원소 값들을
answer
에 넣으면 끝!
- 그리고 이 벡터의 원소 값들을
- Value를 기준으로한 내림 차순 정렬을 진행해야 한다. 👉 Key를 기준으로한 정렬은 가능하지만 Value 를 기준으로 한 map 자체의 정렬은 불가능하기에 pair를 원소로 하는 vector에 이 map의 Key와 Value를 모두 복사한 후 이 vector를 Value (second) 기준으로 내림차순 정렬하면 된다.
🌜 개인 공부 기록용 블로그입니다. 오류나 틀린 부분이 있을 경우
언제든지 댓글 혹은 메일로 지적해주시면 감사하겠습니다! 😄
댓글 남기기