๋ฌธ์ :
programmers.co.kr/learn/courses/30/lessons/72412
์ฝ๋ฉํ ์คํธ ์ฐ์ต - ์์ ๊ฒ์
["java backend junior pizza 150","python frontend senior chicken 210","python frontend senior chicken 150","cpp backend senior pizza 260","java backend junior chicken 80","python backend senior chicken 50"] ["java and backend and junior and pizza 100","pyt
programmers.co.kr
๋ถ์ :
์ด ๋ฌธ์ ๋ ๋ฌธ์์ด๊ณผ ๊ด๋ จ๋ ๋ฌธ์ ์๋ค.
(์นด์นด์ค์์ ํญ์ 1๋ฌธ์ ์ฉ ๋ฌธ์์ด ๊ด๋ จ๋ ๋ฌธ์ ๋ฅผ ๋ด๋๊ฒ ๊ฐ๋ค)
๋ฌธ์ ์์ ์ฃผ์ด์ง info์ query ๋ฐฐ์ด์ 1์ฐจ์ ๋ฐฐ์ด๋ก ๋์ด ์์ด์ 2์ฐจ์ ๋ฐฐ์ด๋ก token ๋จ์ ๋ง๋ค ์ ์ฅํ ์ ์๋๋ก ํ์๋ค. ๊ทธ๋ฆฌ๊ณ ๋ง์ง๋ง ์ ์์ ๋ํด์ intํ vector์ ๊ฐ๊ฐ ๋ฐ์๋ค.
ํจ์จ์ฑ ์ธก๋ฉด์์ 0์ ์ ๋ฐ์์ผ๋ ์ด๋ ๊ฒ ํผ ์ฌ๋๋ ์๊ตฌ๋ .. ํ๊ณ ๋์ด๊ฐ๋ ์ข๋ค ํํ
sstream์ผ๋ก ๊ณต๋ฐฑ ๊ธฐ์ค์ผ๋ก ์ฌ๋์ ๊ธฐ์ค์ผ๋ก set๋ฐฐ์ด์ ๋ด์๊ณ query์ ๋ํด์ vector์ ๋ด์๋ค.
๊ทธ๋ ๊ฒ ๋ด์ ๋ค์ for๋ฌธ์ 3๊ฐ๋ ๋๋ค
์ฒซ๋ฒ์งธ for๋ฌธ์ query์ ์๋งํผ, ๋๋ฒ์งธ for๋ฌธ์ ํ query๋น ๊ฒ์ฌํ ์ฌ๋์ ๋์์์ผฐ๊ณ ์ธ๋ฒ์งธ for๋ฌธ์ ๊ฒ์ฌํ ์ฌ๋๋น query์ ํ ํฐ์ ๋์์์ผ ์ธ๋ฒ์งธ for๋ฌธ์ token์ ๋ชจ๋ ํต๊ณผํ ์ฌ๋์ ๋ํด cnt๊ฐ์ 1 ์ฆ๊ฐ์์ผ j์ฌ๋๋งํผ ์ด 6 ์ฌ๋ ๊ฒ์ฌ ์ํจ ๋ค์ cnt ๊ฐ์ answer vector์ ๋ด์๋ค.
์ฒ์์ ๊ณ ์ํ๋๊ฒ for๋ฌธ์ ๋ป์ ์ง์ํ๋ ๊ฒ์ด์๊ณ ๋๋ฒ์งธ ๊ณ ์ํ๋ ๋ถ๋ถ์ isCondition = false ๋ฐ์ else isCondition = true๋ฅผ ๋ฌ์ ์๋ชป๋ ๊ฐ์ ์ฐพ์ผ๋ฉด ๋ฐ๋ก ๋ฆฌํดํ์ง ์๊ณ ๋ค์ ์กฐ๊ฑด๋ฌธ์์ true๊ฐ ๋์ด ๋ค์ token ๊ฒ์ฌํ๊ณ ๋์ true๋ฅผ ๋ง๋ ๋ค๋ ์ ์์ ์ ๋จน์๋ค โน๏ธ
์๊ฐ์ด ์ค๋ ๊ฑธ๋ ธ๊ณ ์ข์ ์ฝ๋๋ ์๋๋ฐ ์์ผ๋ก ๋ ๋ง์ ๋ฌธ์ ๋ฅผ ํ์ด ๋ด์ผ๊ฒ ๋ค
c++ ์ฝ๋ :
#include <stdio.h>
#include <iostream>
#include <vector>
#include <sstream>
#include <set>
using namespace std;
set<string> memberSet[50001];
vector<int> memberScore; // ์ ์ ๋ณด๊ด์ฉ
vector<string> searchQuery[50001];
vector<int> searchScore;
vector<int> solution(vector<string> info, vector<string> query) {
vector<int> answer;
for(int i = 0; i< info.size(); i++){
string s = info[i];
stringstream ss(s);
string str;
int j =0;
while(ss>>str){
j++;
if(j == 5){
memberScore.push_back(stoi(str));
continue;
}
memberSet[i].insert(str);
}
}
for(int i = 0; i < query.size(); i++){
string s = query[i];
stringstream ss(s);
string str;
int j = 0;
while(ss>>str){
j++;
if(str == "and"){
continue;
}
if(j == 8){
searchScore.push_back(stoi(str));
continue;
}
searchQuery[i].push_back(str);
}
}
for(int i = 0; i < (int)query.size(); i++){ // query index 6
int cnt = 0;
for(int j = 0; j < (int)info.size(); j++){ // person index 6
bool isCondition = true;
for(int k = 0; k < (int)memberSet[j].size() + 1; k++){
if(k == 4){
if(memberScore.at(j) < searchScore.at(i)){
isCondition = false;
break;
}
}else { //k<=3
string queryWord = searchQuery[i][k];
set<string>:: iterator iter;
if(queryWord == "-"){
continue;
}else{
iter = memberSet[j].find(queryWord);
if(iter == memberSet[j].end()){
isCondition = false;
}
}
}
}
if(isCondition == true){
cnt++;
}
}
answer.push_back(cnt);
}
return answer;
}
๊ฒฐ๊ณผ :
'Algorithm๐ฐ > ํ๋ก๊ทธ๋๋จธ์ค' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[ํ๋ก๊ทธ๋๋จธ์ค] ํฉ์น ํ์ ์๊ธ 2021 ์นด์นด์ค ๋ธ๋ผ์ธ๋ ํ ์คํธ level3 (0) | 2021.05.02 |
---|---|
[ํ๋ก๊ทธ๋๋จธ์ค] Summer/Winder coding ๋ฐฉ๋ฌธ ๊ธธ์ด level2 (0) | 2021.04.30 |
[ํ๋ก๊ทธ๋๋จธ์ค] ๋ ๊ฐ ๋ฝ์์ ๋ํ๊ธฐ (0) | 2021.02.26 |
[ํ๋ก๊ทธ๋๋จธ์ค] ํฌ๋ ์ธ ์ธํ ๋ฝ๊ธฐ 2019 ์นด์นด์ค ๊ฐ๋ฐ์ ๊ฒจ์ธ ์ธํด์ฝ (0) | 2021.02.24 |
[ํ๋ก๊ทธ๋๋จธ์ค] 2016๋ basic (0) | 2021.02.24 |
๋๊ธ