์นด์นด์ค๋ ์ฐธ ๋ฌธ์์ด ๋ฌธ์ ๋ฅผ ์ข์ํ๋ ๊ฒ ๊ฐ๋ค.
programmers.co.kr/learn/courses/30/lessons/64064
์ฝ๋ฉํ ์คํธ ์ฐ์ต - ๋ถ๋ ์ฌ์ฉ์
๊ฐ๋ฐํ ๋ด์์ ์ด๋ฒคํธ ๊ฐ๋ฐ์ ๋ด๋นํ๊ณ ์๋ ๋ฌด์ง๋ ์ต๊ทผ ์งํ๋ ์นด์นด์ค์ด๋ชจํฐ์ฝ ์ด๋ฒคํธ์ ๋น์ ์์ ์ธ ๋ฐฉ๋ฒ์ผ๋ก ๋น์ฒจ์ ์๋ํ ์๋ชจ์๋ค์ ๋ฐ๊ฒฌํ์์ต๋๋ค. ์ด๋ฐ ์๋ชจ์๋ค์ ๋ฐ๋ก ๋ชจ์ ๋ถ๋
programmers.co.kr
์๋ฃ๊ตฌ์กฐ 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 |