๋ฌธ์
๋ถ๋ ์ฌ์ฉ์ ๋ฌธ์ ๋ฐ๋ก๊ฐ๊ธฐ
ํ์ด
์ฒ์์๋ ์ ์ฌ ์์ด๋ ๋น ๋ช ๊ฐ์ง์ ๊ฒฝ์ฐ์ ์๊ฐ ๊ฐ๋ฅํ ์ง ๊ณ์ฐํ๋ ค๊ณ ํ์ผ๋, ์ด๋ ๊ฒ ํ๋ค๋ฉด ๊ธฐ์กด์ ์ ์ฌ ์์ด๋์ ๊ฑธ๋ฆฐ ์์ด๋๋ ๋ค์๊ธ ํ๋จํ๋ฉด ์๋๋ ๋ฑ ์๊ฐํด์ผ ํ ๋ฌธ์ ๊ฐ ๋ง์์ง๋ฏ๋ก ์๋์ ๋ฐฉ๋ฒ์ ์ฌ์ฉํ๋ค.
์ ์ฌ ์์ด๋์ ๋งค์นญ๋๋ ์์ด๋๋ฅผ ์ฐพ์๋๋ง๋ค dfs๋ก ๋๋ฉด์ ๋ชจ๋ ์ ์ฌ ์์ด๋์ ๋งค์นญ๋๋ ๊ฒฝ์ฐ์ ์๋ฅผ ์ฐพ์ผ๋ฉด ๋๋ค. ์ ๋ ฅ์ ๋ฒ์๊ฐ ์์์ ์๊ฐ๋ณต์ก๋๋ ๋ฌธ์ ์๋ค. ๋ํด์ ์์ด์ด ์๋๋ผ ์กฐํฉ์ด๋ฏ๋ก ์์์ ๊ด๊ณ์์ด ํ๋์ ๊ฒฝ์ฐ๋ก ์น๋ถํด์ผ ํ๋ค๋ ๊ฑธ ๋ช ์ฌํ์!
์ฝ๋
#include <string>
#include <vector>
#include <regex>
#include <algorithm>
#include <unordered_set>
using namespace std;
vector<string> bannedIdList;
unordered_set<int> answer;
unordered_map<string, int> mappedList;
int powList[8] = {1,2,4,8,16,32,64,128};
string convertBannedId(string bannedId){
auto foundIdx = bannedId.find("*");
while(foundIdx != string::npos){
bannedId[foundIdx] = '.';
foundIdx = bannedId.find("*");
}
return bannedId;
}
void dfs(vector<string>& userIdList, int bannedIdx, int bitSum){
if(bannedIdx == bannedIdList.size()){ // ๋ชจ๋ ์ ์ฌ ์์ด๋ ๊ฒ์ฌ ์๋ฃ
answer.insert(bitSum); // ์๋ฃํ bitSum ์ ์ฅ (์์ ๋ฐ๋์ด๋ ๊ฐ์ ๊ฒฝ์ฐ ์ฒดํฌ ๊ฐ๋ฅ)
return;
}
string bannedId = bannedIdList[bannedIdx];
regex re(bannedId);
for(int i=0; i<userIdList.size(); i++){
if(regex_match(userIdList[i], re)){ // ์ ์ฌ ์์ด๋์ ํด๋นํ๋ค๋ฉด
string tmp = userIdList[i];
userIdList.erase(userIdList.begin()+i); // ํด๋น ์์ด๋๋ฅผ ์ ์ธํ๊ณ
dfs(userIdList, bannedIdx + 1, bitSum + mappedList[tmp]); // ๋ค์ ์ ์ฌ ์์ด๋ ์ถ์
userIdList.insert(userIdList.begin() + i, tmp);
}
}
}
int solution(vector<string> userIdList, vector<string> banned_id_list) {
for(int i=0; i<banned_id_list.size(); i++){ // ์ฃผ์ด์ง ๋ฆฌ์คํธ * => .๋ก ๋ณ๊ฒฝํ์ฌ regex์ธ ์ ์๊ฒ ํ๊ธฐ
bannedIdList.push_back(convertBannedId(banned_id_list[i]));
}
for(int i=0; i<userIdList.size(); i++){ // userId์ 2์ ์ง์๋ค ๋งคํ
mappedList[userIdList[i]] = powList[i];
}
dfs(userIdList, 0, 0);
return answer.size();
}
๊ฒฐ๊ณผ
ํ ์คํธ 1 ใ | ํต๊ณผ (0.02ms, 4.32MB) |
ํ ์คํธ 2 ใ | ํต๊ณผ (0.05ms, 3.71MB) |
ํ ์คํธ 3 ใ | ํต๊ณผ (0.04ms, 3.72MB) |
ํ ์คํธ 4 ใ | ํต๊ณผ (0.05ms, 4.32MB) |
ํ ์คํธ 5 ใ | ํต๊ณผ (101.91ms, 4.27MB) |
ํ ์คํธ 6 ใ | ํต๊ณผ (0.96ms, 4.33MB) |
ํ ์คํธ 7 ใ | ํต๊ณผ (0.05ms, 4.26MB) |
ํ ์คํธ 8 ใ | ํต๊ณผ (0.06ms, 4.33MB) |
ํ ์คํธ 9 ใ | ํต๊ณผ (0.06ms, 4.27MB) |
ํ ์คํธ 10 ใ | ํต๊ณผ (0.05ms, 4.27MB) |
ํ ์คํธ 11 ใ | ํต๊ณผ (0.07ms, 3.84MB) |
Comment