[ํ๋ก๊ทธ๋๋จธ์ค] ์์ ์ฐพ๊ธฐ
https://programmers.co.kr/learn/courses/30/lessons/42839
๋ฌธ์ ์ ๊ทผ
String์ผ๋ก ๋ค์ด์ค๋ ์ซ์๋ค๋ก ๊ฐ๋ฅํ ๋ชจ๋ ์ซ์ ์กฐํฉ์ ๋ง๋ค๊ณ ์ด ์ซ์์ค์ธ์ ์์๋ฅผ ์ฐพ๋ ๋ฌธ์ ์ด๋ค.
์์๋ฅผ ์ฐพ๊ธฐ์ํด์ Math.sqrt(n)์ ์ด์ฉํด์ ๋ฐ๋ณต๋ฌธ ํ์๋ฅผ ์ค์ด๊ณ , dfs๋ฅผ ์ด์ฉํด์ ๋ชจ๋ ๊ฒฝ์ฐ์ ์๋ฅผ ํ์ํ์๋ค.
๊ทธ๋ฆฌ๊ณ ๊ฐ์ ์ซ์๊ฐ ๋๊ฐ ์ด์์์ผ๋ฉด ์ค๋ณต๋๋ ์ซ์๋ค์ด ๋ํ๋๊ฒ ๋์ด์ HashSet์ ์ด์ฉํด์ ์ค๋ณต ๊ฒฝ์ฐ์ ์๋ฅผ ์ ๊ฑฐํ์๋ค.
Code
import java.util.HashSet;
class Solution {
char[] nums;
boolean[] visited;
HashSet<Integer> hs = new HashSet<>();
public int solution(String numbers) {
nums = new char[numbers.length()];
visited = new boolean[numbers.length()];
for(int i = 0 ; i<numbers.length(); i++){
nums[i] = numbers.charAt(i);
}
dfs("");
return hs.size();
}
void dfs(String str){
if(str.length() != 0){
int num = Integer.parseInt(str);
if(isPrime(num)) {
hs.add(num);
}
}
for(int i = 0; i<nums.length; i++){
if(!visited[i]){
if(str.length() == 0 && nums[i] == '0') continue;
visited[i] = true;
dfs(str+nums[i]);
visited[i] = false;
}
}
}
boolean isPrime(int n){
if(n==0 || n==1) return false;
for(int i = 2; i<=Math.sqrt(n); i++){
if(n%i == 0) return false;
}
return true;
}
}
์ด๋ ค์ ๋ ์ / ๋ฐฐ์ด ์ / ๋๋ ์
011์ด ์
๋ ฅ์ผ๋ก ๋ค์ด์ค๊ฒ ๋๋ฉด 11 101์ด ๋๋ฒ์ฉ ์กฐํฉ์ด ๋ ์ ์๊ธฐ๋๋ฌธ์ ์ค๋ณต ๋ฌธ์ ๋ฅผ ํด๊ฒฐํ๊ธฐ ์ํด์ HashSet์ ์ด์ฉํ๊ฒ ๋์๋ค.
๊ทธ๋ฆฌ๊ณ ์ด์ ๊น์ง ํ์๋ ๋ฌธ์ ๋ค์ 011์ด๋ผ๋ฉด str์ ๊ธธ์ด๊ฐ 3์ผ๋๊น์ง ๊ฐ ๋ค์์ ํ๋ณํ๋ ๋ฌธ์ ๋ค์ด์๋๋ฐ, ์ด๋ ๊ฒ ํ๋๊น 1์ด๋ 10 ๊ฐ์ 1,2์ ๊ธธ์ด๋ฅผ ๊ฐ์ง ์ซ์๋ค์ ๊ฑด๋๋ฐ๋ ๋ฌธ์ ๊ฐ ๋ฐ์ํ๋ค. ๊ฐ์ ์๊ณ ๋ฆฌ์ฆ์ด์ฌ๋ ๋ฌธ์ ๊ฐ ์์ฒญ ๋ค์ํ๋ค...ํ...
'Algorithm' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[Algorithm/Java][๋ฐฑ์ค] 1967 ํธ๋ฆฌ์ ์ง๋ฆ (0) | 2022.04.04 |
---|---|
[Algorithm/Java][๋ฐฑ์ค] 11729 ํ๋ ธ์ด ํ ์ด๋ ์์ (0) | 2022.04.01 |
[Algorithm/Java][๋ฐฑ์ค] 9020 ๊ณจ๋๋ฐํ์ ์ถ์ธก (0) | 2022.03.26 |
[Algorithm/Java][ํ๋ก๊ทธ๋๋จธ์ค] ๋ ๋ฐ๋จน๊ธฐ (0) | 2022.03.24 |
[Algorithm/Java][๋ฐฑ์ค] 6603 ๋ก๋ (0) | 2022.03.21 |