์์ ์ฐพ๊ธฐ (with.Java)
์์ ์ฐพ๊ธฐ (with.Java) ๋ฌธ์ ์ ๋ํ์ฌ ์์๋ณธ ๊ธ์ ๋๋ค.
์ฝ๋ฉ ํ ์คํธ ๋ฌธ์ ๋ฅผ ํ๋ฉฐ, ํ์๋ ๋ฌธ์ ์ ๋ํ ํ๊ณ ๋ฅผ ํด๋ณด๊ณ ์ ํฉ๋๋ค.
๋ฌธ์ ์ ๋ํด ๋จผ์ ์์๋ณด๊ฒ ์ต๋๋ค.
๋ฌธ์
ํ์๋ฆฌ ์ซ์๊ฐ ์ ํ ์ข ์ด ์กฐ๊ฐ์ด ํฉ์ด์ ธ์์ต๋๋ค.
ํฉ์ด์ง ์ข ์ด ์กฐ๊ฐ์ ๋ถ์ฌ ์์๋ฅผ ๋ช ๊ฐ ๋ง๋ค ์ ์๋์ง ์์๋ด๋ ค ํฉ๋๋ค.
๊ฐ ์ข ์ด ์กฐ๊ฐ์ ์ ํ ์ซ์๊ฐ ์ ํ ๋ฌธ์์ด numbers๊ฐ ์ฃผ์ด์ก์ ๋, ์ข ์ด ์กฐ๊ฐ์ผ๋ก ๋ง๋ค ์ ์๋ ์์๊ฐ ๋ช ๊ฐ์ธ์ง return ํ๋๋ก solution ํจ์๋ฅผ ์์ฑํด์ฃผ์ธ์.
์ ํ์ฌํญ
- numbers๋ ๊ธธ์ด 1 ์ด์ 7 ์ดํ์ธ ๋ฌธ์์ด์ ๋๋ค.
- numbers๋ 0~9๊น์ง ์ซ์๋ง์ผ๋ก ์ด๋ฃจ์ด์ ธ ์์ต๋๋ค.
- โ013โ์ 0, 1, 3 ์ซ์๊ฐ ์ ํ ์ข ์ด ์กฐ๊ฐ์ด ํฉ์ด์ ธ์๋ค๋ ์๋ฏธ์ ๋๋ค.
์ ์ถ๋ ฅ ์์
numbers | return |
---|---|
โ17โ | 3 |
โ011โ | 2 |
๋ฌธ์ ์ ๋ํ ๋์ ํ์ด
import java.util.Set;
import java.util.HashSet;
class Solution {
private Set<Integer> numSet = new HashSet();
public int solution(String numbers) {
char[] numArr = numbers.toCharArray();
for(int i = 1; i <= numArr.length; i++)
makeCase(numArr, 0, i, new int[numArr.length], new boolean[numArr.length]);
return numSet.size();
}
private void makeCase(char[] numArr, int cnt, int size, int[] idxArr, boolean[] visit){
if(cnt == size){
String numStr = "";
for(int i = 0; i < size; i++) numStr += numArr[idxArr[i]];
int num = Integer.parseInt(numStr);
if(isPrime(num)) numSet.add(num);
return;
}
for(int i = 0; i < numArr.length; i++){
if(!visit[i]){
visit[i] = true; idxArr[cnt] = i;
makeCase(numArr, cnt+1, size, idxArr, visit);
visit[i] = false;
}
}
}
private boolean isPrime(int n){
if(n < 2) return false;
for(int i = 2; i <= Math.sqrt(n); i++)
if(n % i == 0) return false;
return true;
}
}
ํ์ด ์ค๋ช
- solution ๋ฉ์๋๋ ๋ฌธ์์ด numbers๋ฅผ ์ ๋ ฅ์ผ๋ก ๋ฐ์ต๋๋ค.
- numbers๋ฅผ ๋ฌธ์ ๋ฐฐ์ด๋ก ๋ณํํ์ฌ ๊ฐ ์ซ์๋ฅผ ์ชผ๊ฐญ๋๋ค.
- ๊ฐ ์ซ์๋ก ๊ฐ๋ฅํ ๋ชจ๋ ์กฐํฉ์ ์์ฑํ๊ธฐ ์ํด makeCase ๋ฉ์๋๋ฅผ ํธ์ถํฉ๋๋ค.
- makeCase ๋ฉ์๋๋ ์ฌ๊ท์ ์ผ๋ก ํธ์ถ๋๋ฉฐ, ๋ฐฑํธ๋ํน์ ์ฌ์ฉํ์ฌ ๊ฐ๋ฅํ ๋ชจ๋ ์กฐํฉ์ ์์ฑํฉ๋๋ค.
- makeCase ๋ฉ์๋ ๋ด์์๋ ํ์ฌ๊น์ง ์ ํ๋ ์ธ๋ฑ์ค๋ฅผ ์ ์ฅํ๋ ๋ฐฐ์ด idxArr๊ณผ ํด๋น ์ธ๋ฑ์ค๊ฐ ๋ฐฉ๋ฌธ๋์๋์ง๋ฅผ ๋ํ๋ด๋ ๋ฐฐ์ด visit๋ฅผ ์ฌ์ฉํฉ๋๋ค.
- ๊ฐ ์กฐํฉ์ด ์์ฑ๋ ํ์๋ ํด๋น ์ซ์๊ฐ ์์์ธ์ง ํ๋ณํ์ฌ numSet์ ์ถ๊ฐํฉ๋๋ค.
- isPrime ๋ฉ์๋๋ ์ฃผ์ด์ง ์ซ์๊ฐ ์์์ธ์ง๋ฅผ ํ๋ณํฉ๋๋ค.
- ๋ชจ๋ ์กฐํฉ ์์ฑ์ด ์๋ฃ๋ ํ์๋ numSet์ ํฌ๊ธฐ๋ฅผ ๋ฐํํ์ฌ ์์์ ๊ฐ์๋ฅผ ๊ตฌํฉ๋๋ค.
๊ฒฐ๋ก
์ด ์ฝ๋๋ ๋ฐฑํธ๋ํน์ ์ฌ์ฉํ์ฌ ์ฃผ์ด์ง ์ซ์๋ก ๊ฐ๋ฅํ ๋ชจ๋ ์กฐํฉ์ ์์ฑํ๊ณ , ๊ทธ ์ค์์ ์์์ธ ์ซ์์ ๊ฐ์๋ฅผ ๋ฐํํ๋ ๋ฌธ์ ๋ฅผ ํด๊ฒฐํฉ๋๋ค.