-
[C++] ๋ฒ ์คํธ์จ๋ฒ์ฝ๋ฉํ ์คํธ/์ฝ๋ฉํ ์คํธ ์ฐ์ต 2019. 9. 21. 01:46728x90
๋ฌธ์ ์ค๋ช
์คํธ๋ฆฌ๋ฐ ์ฌ์ดํธ์์ ์ฅ๋ฅด ๋ณ๋ก ๊ฐ์ฅ ๋ง์ด ์ฌ์๋ ๋ ธ๋๋ฅผ ๋ ๊ฐ์ฉ ๋ชจ์ ๋ฒ ์คํธ ์จ๋ฒ์ ์ถ์ํ๋ ค ํฉ๋๋ค. ๋ ธ๋๋ ๊ณ ์ ๋ฒํธ๋ก ๊ตฌ๋ถํ๋ฉฐ, ๋ ธ๋๋ฅผ ์๋กํ๋ ๊ธฐ์ค์ ๋ค์๊ณผ ๊ฐ์ต๋๋ค.
- ์ํ ๋ ธ๋๊ฐ ๋ง์ด ์ฌ์๋ ์ฅ๋ฅด๋ฅผ ๋จผ์ ์๋กํฉ๋๋ค.
- ์ฅ๋ฅด ๋ด์์ ๋ง์ด ์ฌ์๋ ๋ ธ๋๋ฅผ ๋จผ์ ์๋กํฉ๋๋ค.
- ์ฅ๋ฅด ๋ด์์ ์ฌ์ ํ์๊ฐ ๊ฐ์ ๋ ธ๋ ์ค์์๋ ๊ณ ์ ๋ฒํธ๊ฐ ๋ฎ์ ๋ ธ๋๋ฅผ ๋จผ์ ์๋กํฉ๋๋ค.
๋ ธ๋์ ์ฅ๋ฅด๋ฅผ ๋ํ๋ด๋ ๋ฌธ์์ด ๋ฐฐ์ด genres์ ๋ ธ๋๋ณ ์ฌ์ ํ์๋ฅผ ๋ํ๋ด๋ ์ ์ ๋ฐฐ์ด plays๊ฐ ์ฃผ์ด์ง ๋, ๋ฒ ์คํธ ์จ๋ฒ์ ๋ค์ด๊ฐ ๋ ธ๋์ ๊ณ ์ ๋ฒํธ๋ฅผ ์์๋๋ก return ํ๋๋ก solution ํจ์๋ฅผ ์์ฑํ์ธ์.
์ ํ์ฌํญ
- genres[i]๋ ๊ณ ์ ๋ฒํธ๊ฐ i์ธ ๋ ธ๋์ ์ฅ๋ฅด์ ๋๋ค.
- plays[i]๋ ๊ณ ์ ๋ฒํธ๊ฐ i์ธ ๋ ธ๋๊ฐ ์ฌ์๋ ํ์์ ๋๋ค.
- genres์ plays์ ๊ธธ์ด๋ ๊ฐ์ผ๋ฉฐ, ์ด๋ 1 ์ด์ 10,000 ์ดํ์ ๋๋ค.
- ์ฅ๋ฅด ์ข ๋ฅ๋ 100๊ฐ ๋ฏธ๋ง์ ๋๋ค.
- ์ฅ๋ฅด์ ์ํ ๊ณก์ด ํ๋๋ผ๋ฉด, ํ๋์ ๊ณก๋ง ์ ํํฉ๋๋ค.
- ๋ชจ๋ ์ฅ๋ฅด๋ ์ฌ์๋ ํ์๊ฐ ๋ค๋ฆ ๋๋ค.
์ ์ถ๋ ฅ ์
genresplaysreturn
[classic, pop, classic, classic, pop] [500, 600, 150, 800, 2500] [4, 1, 3, 0] ์ ์ถ๋ ฅ ์ ์ค๋ช
classic ์ฅ๋ฅด๋ 1,450ํ ์ฌ์๋์์ผ๋ฉฐ, classic ๋ ธ๋๋ ๋ค์๊ณผ ๊ฐ์ต๋๋ค.
- ๊ณ ์ ๋ฒํธ 3: 800ํ ์ฌ์
- ๊ณ ์ ๋ฒํธ 0: 500ํ ์ฌ์
- ๊ณ ์ ๋ฒํธ 2: 150ํ ์ฌ์
pop ์ฅ๋ฅด๋ 3,100ํ ์ฌ์๋์์ผ๋ฉฐ, pop ๋ ธ๋๋ ๋ค์๊ณผ ๊ฐ์ต๋๋ค.
- ๊ณ ์ ๋ฒํธ 4: 2,500ํ ์ฌ์
- ๊ณ ์ ๋ฒํธ 1: 600ํ ์ฌ์
๋ฐ๋ผ์ pop ์ฅ๋ฅด์ [4, 1]๋ฒ ๋ ธ๋๋ฅผ ๋จผ์ , classic ์ฅ๋ฅด์ [3, 0]๋ฒ ๋ ธ๋๋ฅผ ๊ทธ๋ค์์ ์๋กํฉ๋๋ค.
#include <string> #include <vector> #include <algorithm> #include <map> #include <iostream> using namespace std; bool comp(pair<string, int> a, pair<string, int> b) { return a.second > b.second; } bool comp2(pair<int, int> a, pair<int, int> b) { if (a.first == b.first) { return a.second < b.second; } return a.first > b.first; } vector<int> solution(vector<string> genres, vector<int> plays) { vector<int> answer; map<string, int> total_play; map<string, int>::iterator it; map<string, vector<pair<int, int>>> list; for (int i = 0; i < plays.size(); i++) { total_play[genres[i]] += plays[i]; list[genres[i]].push_back(pair<int, int>(plays[i], i)); } int i = 0; vector<pair<string, int>> total_playName; for (it = total_play.begin(); it != total_play.end(); it++, i++) { total_playName.push_back(pair<string, int>(it->first, it->second)); } sort(total_playName.begin(), total_playName.end(), comp); for (int i = 0; i < total_playName.size(); i++) { sort(list[total_playName[i].first].begin(), list[total_playName[i].first].end(), comp2); for (int j = 0; j < 2 && j < list[total_playName[i].first].size(); j++) { answer.push_back(list[total_playName[i].first][j].second); } } return answer; } int main() { vector<string> genres; vector<int> plays; vector<int> ans; genres.push_back("classic"); genres.push_back("pop"); genres.push_back("classic"); genres.push_back("classic"); genres.push_back("pop"); plays.push_back(500); plays.push_back(600); plays.push_back(150); plays.push_back(800); plays.push_back(2500); ans = solution(genres, plays); for(int i=0;i<ans.size(); i++) cout << ans[i] << endl; }
728x90'์ฝ๋ฉํ ์คํธ > ์ฝ๋ฉํ ์คํธ ์ฐ์ต' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[C++] ๊ฐ์ฅ ํฐ ์ (0) 2019.09.21 [C++] K๋ฒ์งธ์ (0) 2019.09.21 [C++] ์์ฅ (0) 2019.09.20 [C++] ์ ํ๋ฒํธ ๋ชฉ๋ก (0) 2019.09.20 [C++] ์์ฃผํ์ง ๋ชปํ ์ ์ (0) 2019.09.20