μΌ | μ | ν | μ | λͺ© | κΈ | ν |
---|---|---|---|---|---|---|
1 | 2 | |||||
3 | 4 | 5 | 6 | 7 | 8 | 9 |
10 | 11 | 12 | 13 | 14 | 15 | 16 |
17 | 18 | 19 | 20 | 21 | 22 | 23 |
24 | 25 | 26 | 27 | 28 | 29 | 30 |
- LIS
- μν
- μ λ ¬
- λμ κ³νλ²
- κ·Έλννμ
- λ°μ΄ν°λ² μ΄μ€
- ν°μ€ν 리μ±λ¦°μ§
- νμ΄μ¬
- μμꡬνκΈ°
- μ€λΈμ
- DFS
- μλ£κ΅¬μ‘°
- λ€μ΄λλ―Ήνλ‘κ·Έλλ°
- db
- BFS
- μ°μ μμν
- ꡬν
- λλΉμ°μ νμ
- νλ‘κ·Έλλ¨Έμ€
- κ·Έλν
- 그리λ
- λ³ν©μ λ ¬
- DP
- SQL
- λ°±μ€
- μμνμ
- μκ³ λ¦¬μ¦
- λμ ν©
- λ¨Έμ§μνΈ
- κΉμ΄μ°μ νμ
πππ°πΈ π£πΆπ΅ π΄π΅π¦π’π₯πΊ
[νλ‘κ·Έλλ¨Έμ€] λΆλ μ¬μ©μ - C++ λ³Έλ¬Έ
[νλ‘κ·Έλλ¨Έμ€] λΆλ μ¬μ©μ - C++
.23 2024. 11. 12. 19:36λ¬Έμ
π: νλ‘κ·Έλλ¨Έμ€ - λΆλ μ¬μ©μ
κ°λ°ν λ΄μμ μ΄λ²€νΈ κ°λ°μ λ΄λΉνκ³ μλ "무μ§"λ μ΅κ·Ό μ§νλ μΉ΄μΉ΄μ€μ΄λͺ¨ν°μ½ μ΄λ²€νΈμ λΉμ μμ μΈ λ°©λ²μΌλ‘ λΉμ²¨μ μλν μλͺ¨μλ€μ λ°κ²¬νμμ΅λλ€. μ΄λ° μλͺ¨μλ€μ λ°λ‘ λͺ¨μ λΆλ μ¬μ©μ λΌλ μ΄λ¦μΌλ‘ λͺ©λ‘μ λ§λ€μ΄μ λΉμ²¨ μ²λ¦¬ μ μ μΈνλλ‘ μ΄λ²€νΈ λΉμ²¨μ λ΄λΉμμΈ "νλ‘λ" μκ² μ λ¬νλ €κ³ ν©λλ€. μ΄ λ κ°μΈμ 보 보νΈμ μν΄ μ¬μ©μ μμ΄λ μ€ μΌλΆ λ¬Έμλ₯Ό '*' λ¬Έμλ‘ κ°λ €μ μ λ¬νμ΅λλ€. κ°λ¦¬κ³ μ νλ λ¬Έμ νλμ '*' λ¬Έμ νλλ₯Ό μ¬μ©νμκ³ μμ΄λ λΉ μ΅μ νλ μ΄μμ '*' λ¬Έμλ₯Ό μ¬μ©νμμ΅λλ€.
"무μ§"μ "νλ‘λ"λ λΆλ μ¬μ©μ λͺ©λ‘μ 맀νλ μλͺ¨μ μμ΄λλ₯Ό μ μ¬ μμ΄λ λΌκ³ λΆλ₯΄κΈ°λ‘ νμμ΅λλ€.
μλ₯Ό λ€μ΄, μ΄λ²€νΈμ μλͺ¨ν μ 체 μ¬μ©μ μμ΄λ λͺ©λ‘μ΄ λ€μκ³Ό κ°λ€λ©΄
μλͺ¨μ μμ΄λ |
frodo |
fradi |
crodo |
abc123 |
frodoc |
λ€μκ³Ό κ°μ΄ λΆλ μ¬μ©μ μμ΄λ λͺ©λ‘μ΄ μ λ¬λ κ²½μ°,
λΆλ μ¬μ©μ |
fr*d* |
abc1** |
λΆλ μ¬μ©μμ 맀νλμ΄ λΉμ²¨μμ μ μΈλμ΄μΌ ν μ μ¬ μμ΄λ λͺ©λ‘μ λ€μκ³Ό κ°μ΄ λ κ°μ§ κ²½μ°κ° μμ μ μμ΅λλ€.
μ μ¬ μμ΄λ |
frodo |
abc123 |
μ μ¬ μμ΄λ |
fradi |
abc123 |
μ΄λ²€νΈ μλͺ¨μ μμ΄λ λͺ©λ‘μ΄ λ΄κΈ΄ λ°°μ΄ user_idμ λΆλ μ¬μ©μ μμ΄λ λͺ©λ‘μ΄ λ΄κΈ΄ λ°°μ΄ banned_idκ° λ§€κ°λ³μλ‘ μ£Όμ΄μ§ λ, λΉμ²¨μμ μ μΈλμ΄μΌ ν μ μ¬ μμ΄λ λͺ©λ‘μ λͺκ°μ§ κ²½μ°μ μκ° κ°λ₯ν μ§ return νλλ‘ solution ν¨μλ₯Ό μμ±ν΄μ£ΌμΈμ.
μ νμ¬ν
- user_id λ°°μ΄μ ν¬κΈ°λ 1 μ΄μ 8 μ΄νμ λλ€.
- user_id λ°°μ΄ κ° μμλ€μ κ°μ κΈΈμ΄κ° 1 μ΄μ 8 μ΄νμΈ λ¬Έμμ΄μ
λλ€.
- μλͺ¨ν μ¬μ©μ μμ΄λλ€μ μλ‘ μ€λ³΅λμ§ μμ΅λλ€.
- μλͺ¨ν μ¬μ©μ μμ΄λλ μνλ²³ μλ¬Έμμ μ«μλ‘λ§ κ΅¬μ±λμ΄ μμ΅λλ€.
- banned_id λ°°μ΄μ ν¬κΈ°λ 1 μ΄μ user_id λ°°μ΄μ ν¬κΈ° μ΄νμ λλ€.
- banned_id λ°°μ΄ κ° μμλ€μ κ°μ κΈΈμ΄κ° 1 μ΄μ 8 μ΄νμΈ λ¬Έμμ΄μ
λλ€.
- λΆλ μ¬μ©μ μμ΄λλ μνλ²³ μλ¬Έμμ μ«μ, κ°λ¦¬κΈ° μν λ¬Έμ '*' λ‘λ§ μ΄λ£¨μ΄μ Έ μμ΅λλ€.
- λΆλ μ¬μ©μ μμ΄λλ '*' λ¬Έμλ₯Ό νλ μ΄μ ν¬ν¨νκ³ μμ΅λλ€.
- λΆλ μ¬μ©μ μμ΄λ νλλ μλͺ¨μ μμ΄λ μ€ νλμ ν΄λΉνκ³ κ°μ μλͺ¨μ μμ΄λκ° μ€λ³΅ν΄μ μ μ¬ μμ΄λ λͺ©λ‘μ λ€μ΄κ°λ κ²½μ°λ μμ΅λλ€.
- μ μ¬ μμ΄λ λͺ©λ‘λ€μ ꡬνμ λ μμ΄λλ€μ΄ λμ΄λ μμμ κ΄κ³μμ΄ μμ΄λ λͺ©λ‘μ λ΄μ©μ΄ λμΌνλ€λ©΄ κ°μ κ²μΌλ‘ μ²λ¦¬νμ¬ νλλ‘ μΈλ©΄ λ©λλ€.
μ μΆλ ₯ μ
user_id | banned_id | result |
["frodo", "fradi", "crodo", "abc123", "frodoc"] | ["fr*d*", "abc1**"] | 2 |
["frodo", "fradi", "crodo", "abc123", "frodoc"] | ["fr*d*", "*rodo", "******"] | 2 |
["frodo", "fradi", "crodo", "abc123", "frodoc"] | ["fr*d*", "*rodo", "******", "******"] | 3 |
νμ λ¬Έμ .
μ°Έκ³ : https://codingjj.tistory.com/84
DFS νμ©ν νμ λ¬Έμ λ μΈμ νμ΄λ μ΄λ ΅κ³ μ¬λ°λΉ
κΈ°λ³Έ μ리λ λ€μκ³Ό κ°λ€.
1. banned_id λ‘λΆν° λΆλ μ¬μ©μμ 맀νν μ μλ μ¬μ©μλ€μ κ·Έλνλ₯Ό μμ±ν΄μ€λ€.
2. banned_id λ‘λΆν° μμ±λ κ·Έλνλ‘λΆν° νμμ μ§ννλ©° μ΄μ μ νμμ ν μ μλ μμ΄λμΈ κ²½μ° DFS μ§ν
λ¨, μλͺ¨ν μ¬μ©μλ€μ μλ‘ μ€λ³΅λμ§ μμμΌ νλ―λ‘
banned_idλ‘λΆν° νμμ μ§νν μμ΄λλ setμ μ§μ΄λ£μ΄ κ΄λ¦¬λ₯Ό ν΄μ€λ€.
C++ set containerλ pythonμ setμ²λΌ μ€λ³΅μ νμ©νμ§ μμ keyλ€μ μ€λ¦μ°¨μ μ§ν©μ΄λ€.
μ°Έκ³ : https://blockdmask.tistory.com/79
λ°λΌμ setμ νμ©ν νμ μμ΄λμ΄λ λ€μκ³Ό κ°λ€.
첫λ²μ§Έ banned_idλ‘λΆν° DFS νμμ μ§νν΄κ°λ©°
- νμ¬ νμμ€μΈ μ μ¬ μμ΄λ λͺ©λ‘μ λ΄κ³ μλ temp setμ ν΄λΉ idκ° μλ κ²½μ°, μ§κΈκΉμ§μ setμ idλ₯Ό μΆκ°
- λ§μ§λ§ banned_id μΈλ±μ€κΉμ§ λλ¬νμ λ, μ§κΈκΉμ§ νμν μ μ¬ μμ΄λ λͺ©λ‘μ μΆκ°
if(idx == graph.size()) {
answer.insert(temp);
}
else{
for(int i = 0; i < graph[idx].size(); i++) {
if(temp.find(graph[idx][i]) == temp.end()) {
set<string> new_set(temp);
new_set.insert(graph[idx][i]);
DFS(idx + 1, new_set);
}
}
}
λ§μ§λ§μ answerμλ μ 체 κ²½μ°μ μκ° λ΄κΈ΄ λ°°μ΄μ΄ μ λ΄κ²¨μκΈ° λλ¬Έμ,
μ 체 answerμ κΈΈμ΄λ₯Ό returnν΄μ£Όλ©΄ μ λ΅μ΄ λλ€.
μ½λ
#include <string>
#include <vector>
#include <set>
using namespace std;
set<set<string>> answer;
vector<vector<string>> graph;
bool Compare(string banned, string user) {
int length = banned.length();
bool is_same = true;
// κΈΈμ΄ λ€λ₯΄λ©΄ μ»·
if(user.length() != length) return false;
for(int i = 0; i < length; i++) {
if(banned[i] == '*') continue;
if(banned[i] != user[i]) is_same = false;
}
return is_same;
}
void DFS(int idx, set<string> temp) {
if(idx == graph.size()) {
answer.insert(temp);
}
else{
for(int i = 0; i < graph[idx].size(); i++) {
if(temp.find(graph[idx][i]) == temp.end()) {
set<string> new_set(temp);
new_set.insert(graph[idx][i]);
DFS(idx + 1, new_set);
}
}
}
}
int solution(vector<string> user_id, vector<string> banned_id) {
int banned = banned_id.size();
int user = user_id.size();
graph.resize(banned, vector<string>());
for(int i = 0; i < banned; i++)
for(int j = 0; j < user; j++)
if(Compare(banned_id[i], user_id[j])) graph[i].push_back(user_id[j]);
set<string> temp;
DFS(0, temp);
return answer.size();
}
'μ½λ©ν μ€νΈ μ€λΉ > νλ‘κ·Έλλ¨Έμ€' μΉ΄ν κ³ λ¦¬μ λ€λ₯Έ κΈ
[νλ‘κ·Έλλ¨Έμ€] νλ°° λ°°λ¬κ³Ό μκ±°νκΈ° - νμ΄μ¬ (1) | 2024.11.14 |
---|---|
[νλ‘κ·Έλλ¨Έμ€] N-Queen - C++ (0) | 2024.11.11 |
[νλ‘κ·Έλλ¨Έμ€] μ¬νκ²½λ‘ - C++ (0) | 2024.11.08 |
[νλ‘κ·Έλλ¨Έμ€] λ¨μμΉ΄λ©λΌ - C++ (0) | 2024.04.11 |
[νλ‘κ·Έλλ¨Έμ€] λ λ§΅κ² - C++ (0) | 2024.04.11 |