[프로그래머스 C++] 튜플
[프로그래머스 C++] 튜플
https://school.programmers.co.kr/learn/courses/30/lessons/64065
프로그래머스
코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.
programmers.co.kr
해결전략
문자열
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
댓글을 사용할 수 없습니다.