https://school.programmers.co.kr/learn/courses/30/lessons/92334
2022 ์นด์นด์ค ๋ธ๋ผ์ธ๋ ์ฝํ ๊ธฐ์ถ
๋ฌธ์ ์ค๋ช
์ ์ ์ฌ์ ๋ฌด์ง๋ ๊ฒ์ํ ๋ถ๋ ์ด์ฉ์๋ฅผ ์ ๊ณ ํ๊ณ ์ฒ๋ฆฌ ๊ฒฐ๊ณผ๋ฅผ ๋ฉ์ผ๋ก ๋ฐ์กํ๋ ์์คํ ์ ๊ฐ๋ฐํ๋ ค ํฉ๋๋ค. ๋ฌด์ง๊ฐ ๊ฐ๋ฐํ๋ ค๋ ์์คํ ์ ๋ค์๊ณผ ๊ฐ์ต๋๋ค.
- ๊ฐ ์ ์ ๋ ํ ๋ฒ์ ํ ๋ช
์ ์ ์ ๋ฅผ ์ ๊ณ ํ ์ ์์ต๋๋ค.
- ์ ๊ณ ํ์์ ์ ํ์ ์์ต๋๋ค. ์๋ก ๋ค๋ฅธ ์ ์ ๋ฅผ ๊ณ์ํด์ ์ ๊ณ ํ ์ ์์ต๋๋ค.
- ํ ์ ์ ๋ฅผ ์ฌ๋ฌ ๋ฒ ์ ๊ณ ํ ์๋ ์์ง๋ง, ๋์ผํ ์ ์ ์ ๋ํ ์ ๊ณ ํ์๋ 1ํ๋ก ์ฒ๋ฆฌ๋ฉ๋๋ค.
- k๋ฒ ์ด์ ์ ๊ณ ๋ ์ ์ ๋ ๊ฒ์ํ ์ด์ฉ์ด ์ ์ง๋๋ฉฐ, ํด๋น ์ ์ ๋ฅผ ์ ๊ณ ํ ๋ชจ๋ ์ ์ ์๊ฒ ์ ์ง ์ฌ์ค์ ๋ฉ์ผ๋ก ๋ฐ์กํฉ๋๋ค.
- ์ ์ ๊ฐ ์ ๊ณ ํ ๋ชจ๋ ๋ด์ฉ์ ์ทจํฉํ์ฌ ๋ง์ง๋ง์ ํ๊บผ๋ฒ์ ๊ฒ์ํ ์ด์ฉ ์ ์ง๋ฅผ ์ํค๋ฉด์ ์ ์ง ๋ฉ์ผ์ ๋ฐ์กํฉ๋๋ค.
๋ค์์ ์ ์ฒด ์ ์ ๋ชฉ๋ก์ด ["muzi", "frodo", "apeach", "neo"]์ด๊ณ , k = 2(์ฆ, 2๋ฒ ์ด์ ์ ๊ณ ๋นํ๋ฉด ์ด์ฉ ์ ์ง)์ธ ๊ฒฝ์ฐ์ ์์์ ๋๋ค.
์ ์ ID์ ์ ๊ฐ ์ ๊ณ ํ ID์ค๋ช
"muzi" | "frodo" | "muzi"๊ฐ "frodo"๋ฅผ ์ ๊ณ ํ์ต๋๋ค. |
"apeach" | "frodo" | "apeach"๊ฐ "frodo"๋ฅผ ์ ๊ณ ํ์ต๋๋ค. |
"frodo" | "neo" | "frodo"๊ฐ "neo"๋ฅผ ์ ๊ณ ํ์ต๋๋ค. |
"muzi" | "neo" | "muzi"๊ฐ "neo"๋ฅผ ์ ๊ณ ํ์ต๋๋ค. |
"apeach" | "muzi" | "apeach"๊ฐ "muzi"๋ฅผ ์ ๊ณ ํ์ต๋๋ค. |
๊ฐ ์ ์ ๋ณ๋ก ์ ๊ณ ๋นํ ํ์๋ ๋ค์๊ณผ ๊ฐ์ต๋๋ค.
์ ์ ID์ ๊ณ ๋นํ ํ์
"muzi" | 1 |
"frodo" | 2 |
"apeach" | 0 |
"neo" | 2 |
์ ์์์์๋ 2๋ฒ ์ด์ ์ ๊ณ ๋นํ "frodo"์ "neo"์ ๊ฒ์ํ ์ด์ฉ์ด ์ ์ง๋ฉ๋๋ค. ์ด๋, ๊ฐ ์ ์ ๋ณ๋ก ์ ๊ณ ํ ์์ด๋์ ์ ์ง๋ ์์ด๋๋ฅผ ์ ๋ฆฌํ๋ฉด ๋ค์๊ณผ ๊ฐ์ต๋๋ค.
์ ์ ID์ ์ ๊ฐ ์ ๊ณ ํ ID์ ์ง๋ ID
"muzi" | ["frodo", "neo"] | ["frodo", "neo"] |
"frodo" | ["neo"] | ["neo"] |
"apeach" | ["muzi", "frodo"] | ["frodo"] |
"neo" | ์์ | ์์ |
๋ฐ๋ผ์ "muzi"๋ ์ฒ๋ฆฌ ๊ฒฐ๊ณผ ๋ฉ์ผ์ 2ํ, "frodo"์ "apeach"๋ ๊ฐ๊ฐ ์ฒ๋ฆฌ ๊ฒฐ๊ณผ ๋ฉ์ผ์ 1ํ ๋ฐ๊ฒ ๋ฉ๋๋ค.
์ด์ฉ์์ ID๊ฐ ๋ด๊ธด ๋ฌธ์์ด ๋ฐฐ์ด id_list, ๊ฐ ์ด์ฉ์๊ฐ ์ ๊ณ ํ ์ด์ฉ์์ ID ์ ๋ณด๊ฐ ๋ด๊ธด ๋ฌธ์์ด ๋ฐฐ์ด report, ์ ์ง ๊ธฐ์ค์ด ๋๋ ์ ๊ณ ํ์ k๊ฐ ๋งค๊ฐ๋ณ์๋ก ์ฃผ์ด์ง ๋, ๊ฐ ์ ์ ๋ณ๋ก ์ฒ๋ฆฌ ๊ฒฐ๊ณผ ๋ฉ์ผ์ ๋ฐ์ ํ์๋ฅผ ๋ฐฐ์ด์ ๋ด์ return ํ๋๋ก solution ํจ์๋ฅผ ์์ฑํด์ฃผ์ธ์.
๊ตฌํ์ ์ฌ์ด๋ฐ ์๊ฐ์ด๊ณผ ๋๋ฌธ์ ๋ง์ด ํค๋ฉจ๋ค!!
์ฒ์์๋ map์ <์ ๊ณ ํ ์ฌ๋, ์ ๊ณ ๋นํ ์ฌ๋ vector> ๋ก ํด์ ์ ๊ณ ๋นํ ์ฌ๋ ๊ฐ ์ค๋ณต์ ๊ฑฐ๋ ๋ฐ๋ณต๋ฌธ ๋๋ ค์ ํ๊ณ
๊ฐ ์ธ๋ฑ์ค๋ง๋ค ์ ๊ณ ๋นํ ํ์๋ฅผ vector์ ๊ธฐ๋กํด์ ์ฐพ์๋๋ฐ
vector์์ k๋ฒ ์ด์ ์ ๊ณ ๋นํ ์ธ๋ฑ์ค ์ฐพ๊ณ -> map์ vector์์ ์ ๊ณ ๋นํ ์ฌ๋ ์๋์ง ์ฐพ๊ณ
-> ์์ผ๋ฉด ์ ๊ณ ํ ์ฌ๋์๊ฒ ๋ฉ์ผ ๋ณด๋ด๊ธฐ ๋ผ๋ ์๊ณ ๋ฆฌ์ฆ์ด ๋จ
๊ทผ๋ฐ ์ด๊ฑด 3๋ฒ์ด๋ 21๋ฒ์ด ๊ณ์ ์๊ฐ์ด๊ณผ๋จ;
๊ทธ๋์ ๋ค์..๋๋์๊ฐ์
๋ฐ๋๋ก map์ <์ ๊ณ ๋นํ ์ฌ๋, ์ ๊ณ ํ ์ฌ๋ set> ์ผ๋ก ์ ์ธํ๋ค
์ผ๋จ set์ด๋๊น ์ค๋ณต์ ๊ฑฐ๋ ์๋์ผ๋ก ๋๊ณ ,
์ด๋ ๊ฒ ์ ์ฅํด๋์ผ๋๊น ์ ๊ณ ๋นํ ์ฌ๋.size()๊ฐ k ์ด์์ผ ๋ ์ ๊ณ ํ ์ฌ๋๋ค์๊ฒ ๋ฉ์ผ์ ๋ณด๋ธ๋ค<< ๋ผ๋ ์๊ณ ๋ฆฌ์ฆ์ด ๋๋๋ฐ
๊ธฐ์กด ์๊ณ ๋ฆฌ์ฆ๋ณด๋ค ๋ ๊ฐ๋จํด์ก๊ณ , ์๊ฐ๋ ๋ง์ด ์ค์๋ค!
์ค๋ณต์ ๊ฑฐ๋ set, ๊ทธ๋ฆฌ๊ณ map ์ ๊ทผ๋ฒ์ auto ๋ก ํ๊ธฐ...โ๐ป
์นด์นด์ค ๊ธฐ์ถ์ ๋ณด๋ ์ด ๊ธฐ์ ์ ์ฝ๊ฐ ์๋ฃ๊ตฌ์กฐ ์ง์์ด ๋ง์์ผ ํ ์ ์๋ ๋ฌธ์ ๋ฅผ ์ข์ํ๋๋ฏ.
๋์ ํ์ด
#include <string>
#include <vector>
#include <map>
#include <set>
#include <iostream>
using namespace std;
vector<int> solution(vector<string> id_list, vector<string> report, int k) {
vector<int> answer(id_list.size(), 0);
map<string,set<string> > does; //์ ๊ณ ๋นํ ๋, ์ ๊ณ ํ ๋ ๋ชฉ๋ก
map<string, int> name_idx; // ๋๋ค์&์ธ๋ฑ์ค
string n1 = "";
string n2 = "";
for(int i=0; i<id_list.size(); ++i) name_idx[id_list[i]] = i;
for(int i=0; i<report.size();++i){
for(int j=0; j<report[i].length();++j){
if(report[i][j]==' '){
n1 = report[i].substr(0,j);
n2 = report[i].substr(j+1);
break;
}
}
does[n2].insert(n1);
}
for(auto i : does){
if(i.second.size() >= k){ // k์ด์ ์ ๊ณ ๋จน์ผ๋ฉด ์ ์ง
for(auto k : i.second){
int idx = name_idx[k];
answer[idx]++;
}
}
}
return answer;
}
'๐ ์๊ณ ๋ฆฌ์ฆ > Programmers' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[C++/PGS] Lv.2 : ์ ํ๋ฒํธ ๋ชฉ๋ก (ํด์) (0) | 2023.04.13 |
---|---|
[C++/PGS] Lv.? : ์ํธ ํ๊ฐ (๋ค์ด๋ฒ ๊ธฐ์ถ) (0) | 2023.04.13 |
[C++/PGS] Lv.1 : ์ฑ๊ฒฉ ์ ํ ๊ฒ์ฌํ๊ธฐ (์นด์นด์ค ๊ธฐ์ถ) (0) | 2023.04.12 |
[C++/PGS] Lv.1 : ๊ฐ์ธ์ ๋ณด ์์ง ์ ํจ๊ธฐ๊ฐ (์นด์นด์ค ๊ธฐ์ถ) (0) | 2023.04.12 |
[C++/PGS] Lv.5 : ๋ฐฉ์ ๊ฐ์ (๊ทธ๋ํ) (0) | 2023.04.12 |