상세 컨텐츠

본문 제목

[Level2.] 튜플 C++

C++/Programmers

by J2on 2024. 2. 22. 21:28

본문

https://school.programmers.co.kr/learn/courses/30/lessons/64065

 

프로그래머스

코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.

programmers.co.kr

 

사실 문제 보면서 의문이었던게

 

"설명에서 어느 부분이 결과물의 순서를 명시하는거지????"

 

순서를 어떻게 하라는 말이 없는데 결과물의 순서는 있길래 좀 당황스러웠다.

 

해답은 많이 나온 요소의 순서대로 vector에 입력하는 것이었다. 

 

<< 코드 >>

 

#include <string>
#include <vector>
#include <unordered_map>
#include <queue> 

using namespace std;

vector<int> solution(string s) {
    
    // map을 통해 어떤 숫자가 몇번 나왔는지를 기록
    unordered_map<int,int> um;
    
    string temp = "";
    for(int i=0; i < s.size(); i++){
        if(s[i] == '{'){
            continue;
        }
        
        if(s[i] == ',' || s[i] == '}'){ // 쉼표나 괄호 닫기가 나온 경우 문자를 넣어줌
            if(temp.size() != 0){
                int num = stoi(temp);
                um[num] += 1;
                temp = "";
            }
        }
        else{
            temp += s[i];
        }
    }
    
    priority_queue<pair<int,int>> pq;
    for(auto& n : um){
        pair<int,int> p(n.second, n.first);    
        pq.push(p);
    }
    
    vector<int> answer;
    while(!pq.empty()){
        pair<int,int> p = pq.top();
        answer.push_back(p.second);
        pq.pop();
    }
    
    return answer;
}

 

map에 <input, 등장횟수> 를 저장한다. 

 

등장횟수에 따라 vector에 입력해주면 되기 때문에,
pair를 역으로 <등장횟수, input>으로 작성해 pq에 넣어 순서대로 빼내어 vector에 넣는 방법을 사용했다. 

 

<< 깃헙 >>

 

https://github.com/J2on/StudyAlgorithm_Part2/tree/main/%ED%94%84%EB%A1%9C%EA%B7%B8%EB%9E%98%EB%A8%B8%EC%8A%A4/2/64065.%E2%80%85%ED%8A%9C%ED%94%8C

 

'C++ > Programmers' 카테고리의 다른 글

[Level1.] 둘만의 암호 C++  (0) 2024.03.01
[Level2.] 호텔 대실 C++  (0) 2024.03.01
[Level2.] 숫자 변환하기 C++  (0) 2024.02.18
[Level1.] 예산 C++  (0) 2024.02.15
[Level2.] 광물 캐기 C++  (0) 2024.02.05

관련글 더보기

댓글 영역