ํฐ์คํ ๋ฆฌ ๋ทฐ
[Java] ํ๋ก๊ทธ๋๋จธ์ค - ๋ถ๋ ์ฌ์ฉ์
๊ฐ๋ฐ๊ฐ๊ตด๐ธ 2022. 7. 12. 18:25[๋ฌธ์ ]
https://school.programmers.co.kr/learn/courses/30/lessons/64064
[ํ์ด]
์ฐ์ banned_id[]๋ฅผ ํ์ํ๋ฉฐ ๊ฐ banned_id์ ๋์๋ ์ ์๋ user_id๋ค์ index๊ฐ์ bandList.get(index)์ ์ ์ฅํ์์ต๋๋ค. ์ด๋, ban์ด ๊ฐ๋ฅํ ์ด๋ฆ์ธ์ง boolean banned(String ban, String name)์ ํตํด *๊ฐ ์๋ ๋ฌธ์๋ค์ ๋น๊ตํ๋ฉฐ ํ์ธํฉ๋๋ค. ์ ์ถ๋ ฅ ์1์ ์์๋ก ์ดํด๋ณด๋ฉด, ์๋์ ๊ฐ์ด banList๊ฐ ์ด๊ธฐํ ๋ฉ๋๋ค.
[[0, 1], [3]]
๋ค์์ผ๋ก void makeSet(String[] user_id, String[] banned_id, int cnt, String set, boolean[] visit)์ ํธ์ถํ์ฌ ๊ฐ๋ฅํ ์กฐํฉ๋ค์ ๋ฝ์์ ๋งคํ์ด ์๋ฃ๋ user_id์ ์กฐํฉ์ ๊ฐ index๊ฐ ์ค๋ฆ์ฐจ์์ผ๋ก ์ ๋ ฌํ์ฌ String ํํ๋ก ์ ์ฅํ ๊ฐ์ names์ ์ถ๊ฐํฉ๋๋ค. ์ด๋ names๋ฅผ ์ฌ์ฉํ๋ ์ด์ ๋ ์์๊ฐ ๋ค๋ฅด๋๋ผ๋, ๊ฐ์ ์ด๋ฆ๋ค์ด ์ ์ฅ๋ ๊ฒฝ์ฐ ์ค๋ณต์ผ๋ก ์ฒ๋ฆฌํด์ผํ๊ธฐ ๋๋ฌธ์ ๋๋ค.
(index๋ค์ ์ค๋ฆ์ฐจ์์ผ๋ก ์ ๋ ฌํ๊ธฐ ์ํด Arrays.sort()๋ฅผ ํ์ฉํ์์ต๋๋ค.)
๋งคํ์ด ๋ชจ๋ ์๋ฃ๋ ์์1์ names๋ ์๋์ ๊ฐ์ต๋๋ค.
[03, 13]
๋ง์ง๋ง์ผ๋ก names์ ํฌ๊ธฐ๋ฅผ ๊ตฌํด answer์ ์ ์ฅํ ํ ๋ฐํํฉ๋๋ค.
[์ฝ๋]
import java.util.*;
class Solution {
public static ArrayList<String> names = new ArrayList<String>();
public static ArrayList<ArrayList<Integer>> banList = new ArrayList<ArrayList<Integer>>();
public static int N;
public int solution(String[] user_id, String[] banned_id) {
int answer = 0;
N = banned_id.length;
for(int i=0;i<N;i++) {
banList.add(new ArrayList<Integer>());
for(int j=0;j<user_id.length;j++) {
if(banned(banned_id[i], user_id[j])) {
banList.get(i).add(j);
}
}
}
boolean[] visit = new boolean[user_id.length];
makeSet(user_id, banned_id, 0, "", visit);
answer = names.size();
return answer;
}
public static void makeSet(String[] user_id, String[] banned_id, int cnt, String set, boolean[] visit) {
if(cnt == N) {
char[] StringtoChar = set.toCharArray();
Arrays.sort(StringtoChar);
String str = new String(StringtoChar);
if(!names.contains(str)) {
names.add(str);
}
return;
}
for(Integer i:banList.get(cnt)) {
if(visit[i]) {
continue;
}
visit[i] = true;
String nextStr = set + i;
makeSet(user_id, banned_id, cnt + 1, nextStr, visit);
visit[i] = false;
}
}
public static boolean banned(String ban, String name) {
int len = ban.length();
if(len != name.length()) {
return false;
}
for(int i=0;i<len;i++) {
if(ban.charAt(i) != '*' && ban.charAt(i) != name.charAt(i)) {
return false;
}
}
return true;
}
}
'Algorithm > Programmers' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[Java] ํ๋ก๊ทธ๋๋จธ์ค - ํธํ ๋ฐฉ ๋ฐฐ์ (0) | 2022.07.22 |
---|---|
[Java] ํ๋ก๊ทธ๋๋จธ์ค - ์ง๊ฒ๋ค๋ฆฌ ๊ฑด๋๊ธฐ (0) | 2022.07.13 |
[Java] ํ๋ก๊ทธ๋๋จธ์ค - ํํ (0) | 2022.07.12 |
[Java] ํ๋ก๊ทธ๋๋จธ์ค - ํฌ๋ ์ธ ์ธํ๋ฝ๊ธฐ ๊ฒ์ (0) | 2022.07.11 |
[Java] ํ๋ก๊ทธ๋๋จธ์ค - ์บ์ (0) | 2022.07.07 |
- Total
- Today
- Yesterday
- ์ด์์ฒด์
- ์ ์ญ ๋ณ์
- ๋์์ธ ํจํด
- ์ฝ๋ฉํ ์คํธ
- ํ๋ก๊ทธ๋๋จธ์ค
- ๋ฐฑ์ค
- ํจ์ํ ํ๋ก๊ทธ๋๋ฐ
- fp
- 2019 ์นด์นด์ค ๊ฐ๋ฐ์ ๊ฒจ์ธ ์ธํด
- ๊ฐ์ฒด์งํฅ ํ๋ก๊ทธ๋๋ฐ
- TDD
- ๋คํธ์ํฌ
- ์๊ณ ๋ฆฌ์ฆ
- ์๋ฐ
- map
- ๋ค์ด๋๋ฏน ํ๋ก๊ทธ๋๋ฐ
- ๋ฐฑ์ค javascript
- ํ๋กํ ์ฝ
- Baekjoon
- git
- ๋ชจ๋ ์๋ฐ์คํฌ๋ฆฝํธ deep dive
- ์๋ฐ์คํฌ๋ฆฝํธ
- http
- ๋ฐฑ์ค node.js
- ํ๋กํผํฐ
- JavaScript
- ๋ ์์ปฌ ํ๊ฒฝ
- ์ด๋ถํ์
- ์นด์นด์ค ์ธํด
- ํฌํฌ์ธํฐ
์ผ | ์ | ํ | ์ | ๋ชฉ | ๊ธ | ํ |
---|---|---|---|---|---|---|
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 | 31 |