๋ฌธ์ ๋งํฌ
https://programmers.co.kr/learn/courses/30/lessons/92334
์ ์ ๋ค์ ํ ๋ฒ์ ํ ๋ช ์ ์ ์ ๋ฅผ ์ ๊ณ ํ ์ ์๋ค. K๋ฒ ์ด์์ ์ ๊ณ ๋ฅผ ๋นํ ์ฌ๋์ ์ด์ฉ ์ ์ง๋ฅผ ๋นํ๋ค.
์ ์ง๋นํ ์ ์ ๋ฅผ ์ ๊ณ ํ ์ ์ ๋ค์๊ฒ ๋ฉ์ผ์ด ๋ฐ์ก๋๋๋ฐ, ๊ฐ ์ ์ ๋ณ๋ก ๋ช ํต์ ๋ฉ์ผ์ ๋ฐ์๋์ง ์ถ๋ ฅํ๋ ๋ฌธ์ .
ํ์ด
์ฝ๋ฉํ ์คํธ ๋ฌธ์ ๋ ๋ฐฑ์ค๊ณผ๋ ๋ค๋ฅด๊ฒ ์๋ฃจ์ ์ ํ์ด ์ ํด์ ธ์์๋ค.
์ ๋ ฅ๊ณผ ์ถ๋ ฅ์ ์์์ ๋๊ณ , ์ฐ๋ฆฌ๋ ์๋ฃจ์ ํจ์๋ง ์์ฑํ๋ฉด ๋๋ค.
๋ฌธ์ ์ ์๋์ ๊ฐ์ ์กฐ๊ฑด์ด ์ฃผ์ด์ ธ์๋ค.
ํ ์ ์ ๋ฅผ ์ฌ๋ฌ ๋ฒ ์ ๊ณ ํ ์๋ ์์ง๋ง, ๋์ผํ ์ ์ ์ ๋ํ ์ ๊ณ ํ์๋ 1ํ๋ก ์ฒ๋ฆฌ๋ฉ๋๋ค
ํ ์ฌ๋์ด ๊ฐ์ ์ฌ๋์ ์ฌ๋ฌ ๋ฒ ์ค๋ณตํด์ ์ ๊ณ ํ ์๋ ์์ง๋ง, ์ ํจํ์ง๋ ์๋ค๋ ๋ป์ด๋ค.
๊ทธ๋์ ์ ๊ณ ๋ฐ์ ๋ด์ฉ์ด ๋ด๊ฒจ์๋ report ๋ฒกํฐ์์ unique๋ฅผ ์ด์ฉํด ์ค๋ณต์ ์ ๊ฑฐํด์คฌ๋ค.
- ์ค๋ณต์ ์ ๊ฑฐํ๋ ๋ฐฉ๋ฒ
1. ๋ฒกํฐ๋ฅผ ์ ๋ ฌ์์ผ์ค๋ค. => sort(report.begin(), report.end());
2. ์ ๋ ฌ์ํจ ๋ฒกํฐ์์ unique๊ฐ ๋ฆฌํดํ๋ ์ธ๋ฑ์ค ~ ๋๊น์ง ์ญ์ ์ํจ๋ค.
=> report.erase(unique(report.begin(), report.end()), report.end());
์ด๋ ๊ฒ ํ๋ฉด ๋ฒกํฐ๋ด์ ์ค๋ณต๋๋ ์ธ์๋ค์ 1๊ฐ๋ง ๋จ๊ธฐ๊ณ ์ญ์ ํ ์ ์๋ค.
- ์ ๊ณ ๋ฐ์ ๋ด์ฉ ์ฒ๋ฆฌ
์ ๊ณ ๋ด์ฉ์ ๋ฌธ์์ด์ ํํ๋ก ๋์ด์๋ค. "์ ๊ณ ํ ์ฌ๋ ์ ๊ณ ๋นํ ์ฌ๋" ์ ํ์์ด๋ค. ์๋ฅผ ๋ค์ด ์ ๊ณ ๋ด์ฉ์ด "Muzi Frodo" ๋ฉด ๋ฌด์ง๊ฐ ํ๋ก๋๋ฅผ ์ ๊ณ ํ๋ค๋ ๋ป์ด๋ค. ๋ฌธ์์ด ๋ด์์ ๋์์ฐ๊ธฐ๋ฅผ ๊ธฐ์ค์ผ๋ก ์ ๊ณ ํ ์ฌ๋๊ณผ ์ ๊ณ ๋นํ ์ฌ๋์ด ๋๋์ด์ง๋ค. ๊ทธ๋์ ๋์์ฐ๊ธฐ๋ฅผ ๊ธฐ์ค์ผ๋ก ๋ฌธ์์ด์ ์๋ผ์คฌ๋ค.
find ํจ์๋ฅผ ์ด์ฉํด์ ๋์์ฐ๊ธฐ์ ์์น๋ฅผ ์ฐพ์๋ธ๋ค. string.find("",0) ์ด๋ผ๊ณ ํ๋ฉด ๋ฌธ์์ด์์ ์ฒ์์ผ๋ก ๋์์ฐ๊ธฐ๊ฐ ๋ฐ๊ฒฌ๋๋ ์ธ๋ฑ์ค๋ฅผ ๋ฆฌํดํด์ค๋ค.
๊ทธ ์ธ๋ฑ์ค๋ฅผ ๊ธฐ์ค์ผ๋ก ์ฒ์ ~ ์คํ์ด์ค๋ฐ ์, ์คํ์ด์ค๋ฐ ๋ค ~ ๋๊น์ง ์ด๋ ๊ฒ ๋ฌธ์์ด์ 2๊ฐ๋ก ์๋ผ์ฃผ๋ฉด ๋๋ค.
๋ฌธ์์ด์ ์๋ฅด๋ ๊ฑด substr() ํจ์๋ฅผ ์ด์ฉํ๋ค. substrํจ์๋ substr(์์์ธ๋ฑ์ค, ์๋ฅผ ๋ฌธ์์ด์ ๊ธธ์ด) ์ด๋ ๊ฒ ํ๋ผ๋ฏธํฐ๋ฅผ ๋ฐ๋๋ค.
๊ทธ๋ฆฌ๊ณ count๋ผ๋ ๋ฐฐ์ด์ ๋ง๋ค์ด์ ๊ฐ ID๋ณ๋ก ์ด ๋ช๋ฒ์ ์ ๊ณ ๋ฅผ ๋ฐ์๋์ง ์ ๋ค.
๋ชจ๋ ์ ๊ณ ๋ด์ฉ์ ์ฒ๋ฆฌํ ํ์ count ๋ฐฐ์ด์ ๋๋ฉด์ ๊ฐ์ด K์ด์์ธ ID๋ ์ ์ง๋ฅผ ๋นํ๊ฒ๋๋ค.
์ ์ง๋ฐ์ ํด๋น ์์ด๋๋ฅผ ๋๊ฐ ์ ๊ณ ํ๋์ง๋ฅผ ์์์ผ ๋ฉ์ผ์ ๋ฐ์กํด์ค ์ ์๋ค. ๊ทธ๋์ Who_reported๋ผ๋ ๋ฒกํฐ๋ฅผ ๋ง๋ค์ด์
Who_reported[์ ๊ณ ๋ฐ์ ID] = {์ ๊ณ ํ ID} ์ด๋ ๊ฒ ์ ๋ณด๋ฅผ ์ ์ฅํด๋์๋ค.
- ๋ฌธ์์ด์ธ ์์ด๋๋ฅผ ์ซ์์ธ ์ธ๋ฑ์ค๋ก ๋ณํ
๋ฌธ์์ด ๋ฒกํฐ์ธ id_list ์์ "Muzi"๋ผ๋ ์ฌ๋์ ID๊ฐ ๋ช ๋ฒ์งธ ์ธ๋ฑ์ค์ ์๋ ์ง ์์์ผ ์ด ๋ฌธ์ ๋ฅผ ์ฒ๋ฆฌํ ์ ์๋ค.
๋๋ find๋ผ๋ ํจ์๋ฅผ ์ด์ฉํด์ id_list.find(id_list.begin(), id_list.end(), "Muzi") - id_list.begin() ์ด๋ ๊ฒ ํด์ ์ธ๋ฑ์ค๋ฅผ ์ฐพ์๋๋ค. ๋ฌผ๋ก ์ด๋ ๊ฒ ํด๋ ํต๊ณผ๋ฅผ ๋ฐ๊ธดํ์ง๋ง, ๋ค๋ฅธ ๋ถ๋ค์ ์ด๋ป๊ฒ ํ๋ ๋ดค๋๋ map์ ์ด์ฉํ์ ๋ถ์ ์ฝ๋๊ฐ ์ ์ผ ํจ์จ์ ์ธ ๊ฒ ๊ฐ์๋ค..
map์ ์ด์ฉํ๋ฉด ๋ ๋นจ๋ฆฌ ID์ธ๋ฑ์ค๋ฅผ ์ฐพ์ ์ ์๋ค. map์ ํค๋ฅผ ์ด์ฉํด์ ๊ฐ์ ์ฐพ๋ ๋ฐฉ์์ด๋ฏ๋ก O(1)๋ง์ ์ธ๋ฑ์ค๋ฅผ ์ฐพ์ ์์๋ค. ์ ์ธ์ map Temp <string, int>; ์ด๋ ๊ฒ ํด์ฃผ๋ฉด๋๋ค. ๋ง์ฝ Muzi๋ผ๋ ์ ์ ์ ID ์ธ๋ฑ์ค๊ฐ 1์ด๋ผ๊ณ ํ๋ฉดTemp["Muzi"] == 1์ด๋ค.
|
|
#include <string>
#include <vector>
#include <algorithm>
#include <string.h>
using namespace std;
const int MAX_N = 1000 + 5;
int get_idx(string str, vector<string> id_list);
vector<int> solution(vector<string> id_list, vector<string> report, int k) {
vector<int> answer;
sort(report.begin(), report.end());
report.erase(unique(report.begin(), report.end()), report.end());
vector<int> Who_reported[MAX_N];
int count[MAX_N];
memset(count, 0, sizeof(count));
for (int i = 0; i < report.size(); i++) {
int pos = report[i].find(" ", 0);
string from = report[i].substr(0, pos);
string to = report[i].substr(pos + 1, report[i].length());
int from_idx = get_idx(from, id_list);
int to_idx = get_idx(to, id_list);
Who_reported[to_idx].push_back(from_idx);
count[to_idx]++;
}
int copy_ans[MAX_N];
memset(copy_ans, 0, sizeof(copy_ans));
for (int i = 0; i < id_list.size(); i++) {
if (count[i] >= k) {
for (int j = 0; j < Who_reported[i].size(); j++) {
copy_ans[Who_reported[i][j]]++;
}
}
}
for (int i = 0; i < id_list.size(); i++) {
answer.push_back(copy_ans[i]);
}
return answer;
}
int get_idx(string str, vector<string> id_list){
int ret = find(id_list.begin(), id_list.end(), str) - id_list.begin();
return ret;
}
|
cs |
๋งค๋ฒ ๋ฐฑ์ค๋ง ํ๋ค๊ฐ, ์ฝ๋ฉํ ์คํธ ๋ฐฉ์์ผ๋ก ์ฐ์ตํ๋ ค๊ณ ์ค๋๋ถํฐ ์ฝ๋ฉํ ์คํธ ๋ฌธ์ ๋ฅผ ํ์ด๋ณด๋ คํ๋ค.
1,2๋จ๊ณ ๋ฌธ์ ๋ ๋๋ถ๋ถ ๋ฌธ์์ด์ ์ฒ๋ฆฌํ๋ ๋ฌธ์ ๊ฐ ๋ง์๋ค. ํ์ ํ๋ ๋ฐฑ์ค๋ฌธ์ ๋ ๋ฌธ์์ด๊ณผ ๊ด๋ จ๋ ๋ฌธ์ ๊ฐ ์์ด์ ๋ฌธ์์ด์ ์ฒ๋ฆฌํ๋๊ฒ ์์ง ์ต์ํ์ง ์๋ค. ๊ณ์ ๋ฌธ์ ๋ฅผ ํ์ด๋ณด๋ฉด์ ๋ฌธ์์ด ๋ค๋ฃจ๋ ๋ฒ์ ์ตํ์ผ๊ฒ ๋ค.
'ํ๋ก๊ทธ๋๋จธ์ค > 1๋จ๊ณ' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[ํ๋ก๊ทธ๋๋จธ์ค Lv1] : ์ฒด์ก๋ณต (0) | 2022.06.21 |
---|---|
[ํ๋ก๊ทธ๋๋จธ์ค Lv1] : ์ ๊ท ์์ด๋ ์ถ์ฒ (0) | 2022.06.13 |
[ํ๋ก๊ทธ๋๋จธ์ค Lv1] : ๋ก๋์ ์ต๊ณ ์์์ ์ต์ ์์ (0) | 2022.06.13 |