[프로그래머스 C++] 튜플
[프로그래머스 C++] 튜플
https://school.programmers.co.kr/learn/courses/30/lessons/64065
해결전략
문자열
map
pair
코드
#include <string>
#include <vector>
#include <map>
#include <algorithm>
using namespace std;
vector<int> solution(string s) {
map<int, int> m; // 숫자와 그 등장 횟수를 저장할 맵
int tmpNum = 0; // 현재 파싱 중인 숫자
//처음과 끝의 {, } 제외하고 for문을 돌린다. 1~s.size()-1
for (int i = 1; i < s.size() - 1; i++)
{
// ',' 또는 '}' 문자를 만나면 현재 파싱 중인 숫자의 등장 횟수 증가
if (s[i] == ',' || s[i] == '}')
{
if (tmpNum != 0) {
m[tmpNum]++;
tmpNum = 0; // 다음 숫자를 위해 tmpNum 초기화
}
}
// '0' ~ '9' 사이의 문자(즉, 숫자)를 만나면 tmpNum에 추가
if ('0' <= s[i] && s[i] <= '9') {
tmpNum *= 10;
tmpNum += s[i] - '0';
}
}
vector<pair<int, int>> v(m.begin(), m.end()); // 맵의 원소들로 벡터 생성
sort(v.begin(), v.end(), [](pair<int, int> a, pair<int, int> b) {
return a.second > b.second; // 등장 횟수에 따라 내림차순 정렬
});
vector<int> answer;
for (auto& i : v) {
answer.push_back(i.first); // 정렬된 벡터에서 각 원소(숫자)만 추출하여 answer에 추가
}
return answer;
}
'⭐ 코딩테스트 > 프로그래머스' 카테고리의 다른 글
[프로그래머스 C++] 기능개발 (0) | 2023.09.22 |
---|---|
[프로그래머스 C++] [1차] 뉴스 클러스터링 (0) | 2023.09.21 |
[프로그래머스 C++] 피로도 (0) | 2023.09.15 |
[프로그래머스 C++] 의상 (0) | 2023.09.15 |
[프로그래머스 C++] 행렬의 곱셈 (0) | 2023.09.13 |
댓글
이 글 공유하기
다른 글
-
[프로그래머스 C++] 기능개발
[프로그래머스 C++] 기능개발
2023.09.22 -
[프로그래머스 C++] [1차] 뉴스 클러스터링
[프로그래머스 C++] [1차] 뉴스 클러스터링
2023.09.21 -
[프로그래머스 C++] 피로도
[프로그래머스 C++] 피로도
2023.09.15 -
[프로그래머스 C++] 의상
[프로그래머스 C++] 의상
2023.09.15