์นด์นด์ค๋ ์ฐธ ๋ฌธ์์ด ๋ฌธ์ ๋ฅผ ์ข์ํ๋ ๊ฒ ๊ฐ๋ค.
programmers.co.kr/learn/courses/30/lessons/64064
์๋ฃ๊ตฌ์กฐ HashSet
๊ณผ String
์ matches()
๋ฉ์๋๋ฅผ ์ด์ฉํด์ ํ์๋๋ฐ ๊ตฌ๊ธ๋ง ์ ํ์ผ๋ฉด ๋ชป ํ์์ ๊ฑฐ๋ค.
์ ๋ต์ ๋ฃ๋ HashSet
์ ๊ฒฝ์ฐ์๋, HashSet
์์ ๋ Set
๋ List
๋ฅผ ๋ด์์ ์ค๋ณต์ ์ ๊ฑฐํ ์๋ ์๊ฒ ์ง๋ง, ๋๋ String
์ด ์ ์ผ ํธํด์ ์ฐพ์๋ธ user_id
๊ฐ๋ค์ StringBuilder
์ด์ฉํด์ ํฉ์ณ์ค ๋ค์์ ๊ทธ ๊ฐ์ ๊ธฐ์ค์ผ๋ก HashSet
์ ์ค๋ณต์ด ๋ด๊ธฐ์ง ์๋๋ก ํ๋ค.
์๋ฅผ ๋ค์ด, "frodo"
์ "abc123"
์ด ๋น์ฒจ์์ ์ ์ธ๋ ์๋ชจ์ ์์ด๋๋ผ๋ฉด "abc123 frodo"
๋ฅผ resultSet
์ ๋ด์์ ๋ ๋๊ฐ์ String
์ด ๋ด๊ธฐ์ง ์๋๋ก ํ๋ค.
์ ๊ทธ๋ฆฌ๊ณ ์ ๋ค๋ค '*'
๋ฅผ '.'
๋ก replace
ํ๋์ง ๊ถ๊ธํ๋๋ฐ, ์๋ฐ์ ์ ๊ท์ ํํ์์ '.'
๊ฐ ์์์ ํ๋ฌธ์๋ฅผ ์๋ฏธํด์ ๊ทธ๋ฐ๊ฑฐ์๋ค
import java.util.*;
class Solution {
public static HashSet<String> resultSet;
public static boolean[] checked;
public int solution(String[] user_id, String[] banned_id) {
resultSet = new HashSet<String>();
checked = new boolean[user_id.length];
for(int i=0;i<banned_id.length;i++){
banned_id[i] = banned_id[i].replace('*','.');
}
dfs(0, user_id, banned_id, new HashSet<String>());
return resultSet.size();
}
private static void dfs(int checkIdx, String[] user_id, String[] banned_id, HashSet<String> result){
if(result.size()==banned_id.length){
ArrayList<String> list = new ArrayList<String>(result);
Collections.sort(list);
StringBuilder sb = new StringBuilder();
for(String str : list){
sb.append(str+" ");
}
resultSet.add(sb.toString().trim());
return;
}
for(int i=0;i<user_id.length;i++){
if(checked[i]) continue;
if(user_id[i].matches(banned_id[checkIdx])){
checked[i] = true;
result.add(user_id[i]);
dfs(checkIdx+1, user_id, banned_id, result);
result.remove(user_id[i]);
checked[i] = false;
}
}
}
}
์ดํด๋ฆฝ์ค์์ ๊ฐ๋ฐํ๊ณ ํ๋ก๊ทธ๋๋จธ์ค์ ๋ถ์ฌ๋ฃ๊ธฐ ํ๋ ค๊ณ ํ๋๋ฐ, ๋ถ์ฌ๋ฃ๊ธฐ๊ฐ ์๋ผ์ ๋ ๋ค์ ํ๊ธ์ํ๊ธ์ ํ์ดํํด์ ์ ์ถํ๋ค. ์ ๋ฒ์ ์ ค๋ดค์ ๋๋ ์ ๊ทธ๋ฌ๋ ๊ฒ ๊ฐ์๋ใ ใ ใ ใ ์ ์ถํ๋๋ฐ ์๊พธ ์ ๋ต์ด 0๊ฐ๋ผ๊ธธ๋ ์ง์ง ๋์ ๋น ์ง๋ ์ค ์์๋ค. ์ ๊ทธ๋ฆฌ๊ณ import๋ ๋ด๊ฐ ์ง์ ํด์ฃผ์ด์ผ๋๋ ๊ฑธ ๋ ๊ธฐ์ต ๋ชปํ๊ณ ์ ์ถํ๋ค๊ฐ ํค๋งธ๋ค.
'์๊ณ ๋ฆฌ์ฆ > ๋ฌธ์ ' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[์๋ฐ] ๋ฐฑ์ค 4386 - ๋ณ์๋ฆฌ ๋ง๋ค๊ธฐ (0) | 2021.01.05 |
---|---|
[์๋ฐ] ๋ฐฑ์ค 1197 - ์ต์ ์คํจ๋ ํธ๋ฆฌ (0) | 2021.01.05 |
[์๋ฐ] ๋ฐฑ์ค 1976 - ์ฌํ ๊ฐ์ (0) | 2021.01.02 |
[์๋ฐ] ๋ฐฑ์ค 1717 - ์งํฉ์ ํํ (0) | 2020.12.29 |
[์๋ฐ] ๋ฐฑ์ค 1956 - ์ด๋ (0) | 2020.12.24 |