๋ณธ๋ฌธ ๋ฐ”๋กœ๊ฐ€๊ธฐ
๐Ÿ“ ์•Œ๊ณ ๋ฆฌ์ฆ˜/Programmers

[C++/PGS] Lv.2 : ํŠœํ”Œ (2019 ์นด์นด์˜ค)

by xxilliant 2025. 5. 14.
728x90
๋ฐ˜์‘ํ˜•

 

https://school.programmers.co.kr/learn/courses/30/lessons/64065?language=cpp

 

ํ”„๋กœ๊ทธ๋ž˜๋จธ์Šค

SW๊ฐœ๋ฐœ์ž๋ฅผ ์œ„ํ•œ ํ‰๊ฐ€, ๊ต์œก, ์ฑ„์šฉ๊นŒ์ง€ Total Solution์„ ์ œ๊ณตํ•˜๋Š” ๊ฐœ๋ฐœ์ž ์„ฑ์žฅ์„ ์œ„ํ•œ ๋ฒ ์ด์Šค์บ ํ”„

programmers.co.kr


ํ”„๋กœ๊ทธ๋ž˜๋จธ์Šค ๋ ˆ๋ฒจ 2.

์‚ฌ์‹ค ์ฒ˜์Œ์—๋Š” ๋‹จ์ˆœํ•œ Set ์ž๋ฃŒํ˜• ํ™œ์šฉํ•˜๋Š” ๋ฌธ์ œ์ธ ์ค„ ์•Œ์•˜์œผ๋‚˜, ํ•จ์ •์ด์—ˆ๋‹ค.

 

๋ฐฐ์—ด์ด ์•„๋‹ˆ๋ผ string s๊ฐ€ ๋งค๊ฐœ๋ณ€์ˆ˜์ธ ๊ฒƒ

+

ํŠœํ”Œ์˜ ์›์†Œ ์ˆœ์„œ๊ฐ€ ์ค‘์š”

+

์ˆซ์ž์˜ ๋“ฑ์žฅ ์ˆœ์„œ ํŒŒ์•… ํ•„์š”

 

์ด ๋ณต์žกํ•œ ์š”์†Œ๋“ค์ด ์„ž์—ฌ์žˆ๋Š” ๋ฌธ์ œ.....ใ…Ž.ใ…Ž

์‚ฌ์‹ค ๋ฌธ์ œ๋ฅผ ์ฝ๊ณ ๋„ ์–ด๋–ป๊ฒŒ ์ˆœ์„œ๊ฐ€ ์ •ํ•ด์ง€๋Š”๊ฑด์ง€ ์ดํ•ด๊ฐ€ ์•ˆ๋ผ์„œ ๊ฒฐ๊ตญ ํžŒํŠธ๋ฅผ ์ฐธ๊ณ ํ–ˆ๋‹ค.

ํŠœํ”Œ์˜ ์›์†Œ ์ˆœ์„œ๋ฅผ ์‰ฝ๊ฒŒ ๊ตฌํ•˜๋ ค๋ฉด, ํ•œ ์ˆซ์ž๊ฐ€ ๋ช‡ ๋ฒˆ ๋“ฑ์žฅํ•˜๋Š”์ง€ ์นด์šดํŠธํ•˜๋ฉด ๋œ๋‹ค!!! ๐Ÿ˜ฑ ์—„์ฒญ๋‚œ ์‚ฌ์‹ค์ด๋‹ค.

 

์™œ๋ƒ๋ฉด s๊ฐ€ {{4,2,3},{3},{2,3,4,1},{2,3}} ๋ผ๋ฉด ํŠœํ”Œ์€ [3, 2, 4, 1]๋ผ๋Š” ๊ฒƒ์ด ์ดํ•ด๊ฐ€ ์•ˆ๋˜์—ˆ๋Š”๋ฐ,

3์ด ์ตœ์ดˆ ๋“ฑ์žฅ -> ๊ทธ ๋‹ค์Œ 2 -> .... ์ด๋ ‡๊ฒŒ ์ˆซ์ž์˜ ๋“ฑ์žฅ ์ˆœ์„œ๊ฐ€ ๊ณง ํŠœํ”Œ ์›์†Œ์˜ ์ˆœ์„œ๊ฐ€ ๋จ

 

์ด๋ง์€ ์ฆ‰, 3์€ 4๋ฒˆ, 2๋Š” 3๋ฒˆ, 4๋Š” 2๋ฒˆ, 1์€ 1๋ฒˆ ๋“ฑ์žฅํ•˜๋ฏ€๋กœ

๋“ฑ์žฅ ํšŸ์ˆ˜์˜ ๋‚ด๋ฆผ์ฐจ์ˆœ์ด ๊ณง ํŠœํ”Œ ๋‚ด์—์„œ์˜ ์ˆœ์„œ์ธ ๊ฒƒ์ด๋‹ค. ์ด ๊ทœ์น™์„ ๋ฐœ๊ฒฌํ•œ ์‚ฌ๋žŒ์€ ์‹ ์ธ ๊ฒƒ ๊ฐ™๋‹ค. ใ… ใ… 

 

 

๋‚˜์˜ ํ’€์ด

#include <string>
#include <vector>
#include <map>
#include <algorithm>
#include <iostream>
using namespace std;

bool comp(pair<int,int>& a, pair<int,int>& b){
    return a.second > b.second;
}

vector<int> solution(string s) {
    vector<int> answer;
    map<int,int> numCount; // ํ•œ ์ˆซ์ž๊ฐ€ ๋ช‡๋ฒˆ ๋‚˜์˜ค๋Š”์ง€ ์นด์šดํŠธ. ๋งŽ์ด ๋‚˜์˜ฌ์ˆ˜๋ก ์•ž ์ˆœ์„œ.
    string tmp = "";
    for(int i=0; i<s.length(); ++i){
        if(s[i]=='{') continue;
        if(s[i]==',' && s[i+1]!='{'){ // ์ˆซ์ž ์ €์žฅ
            int n = stoi(tmp);
            numCount[n]++;
            tmp = "";
        }
        if(s[i]=='}' && s[i+1]==','){ // ์ˆซ์ž ์ €์žฅ
            int n = stoi(tmp);
            numCount[n]++;
            tmp = "";
        }
        if(s[i]==',' || s[i]=='}') continue;
        tmp += s[i];
    }
    int n = stoi(tmp);
    numCount[n]++;
    
    vector<pair<int,int>> v(numCount.begin(), numCount.end());
    sort(v.begin(), v.end(), comp);
    
    for(auto a:v) answer.push_back(a.first);
    return answer;
}

728x90
๋ฐ˜์‘ํ˜•