ํ์๋ฆฌ ์ซ์๊ฐ ์ ํ ์ข ์ด ์กฐ๊ฐ์ด ํฉ์ด์ ธ์์ต๋๋ค. ํฉ์ด์ง ์ข ์ด ์กฐ๊ฐ์ ๋ถ์ฌ ์์๋ฅผ ๋ช ๊ฐ ๋ง๋ค ์ ์๋์ง ์์๋ด๋ ค ํฉ๋๋ค.
๊ฐ ์ข ์ด ์กฐ๊ฐ์ ์ ํ ์ซ์๊ฐ ์ ํ ๋ฌธ์์ด numbers๊ฐ ์ฃผ์ด์ก์ ๋, ์ข ์ด ์กฐ๊ฐ์ผ๋ก ๋ง๋ค ์ ์๋ ์์๊ฐ ๋ช ๊ฐ์ธ์ง return ํ๋๋ก solution ํจ์๋ฅผ ์์ฑํด์ฃผ์ธ์.
numbers | return |
---|---|
"17" | 3 |
"011" | 2 |
HashSet
์ ์ฌ์ฉํ์ฌ ํด๋น ๋ฌธ์ ํด๊ฒฐ ๊ฐ๋ฅ
โ> Set ์ธํฐํ์ด์ค์ ๊ตฌํ ํด๋์ค(์ค๋ณต์ ๊ฑฐ)import java.util.HashSet;
import java.util.Iterator;
public class Solution {
// ํ๋ก๊ทธ๋๋จธ์ค LEVEL2 ์์ ์ฐพ๊ธฐ
// ๋ฌธ์ URL : <https://programmers.co.kr/learn/courses/30/lessons/42839>
// '11๊ณผ 011์ ๊ฐ์ ์ซ์๋ก ์ทจ๊ธํฉ๋๋ค.'
// --> ์ค๋ณต์ ์ ๊ฑฐํ๋ฉด์ ์ซ์๋ฅผ ์ ์ฅํ๋ set ์ ์ธ
HashSet<Integer> set = null;
public int solution(String numbers) {
int answer = 0;
set = new HashSet<>();
// numbers์ ์ ์ธ๋ ์ซ์๋ก ๋ชจ๋ ์ซ์ ํ์
permutation("", numbers);
Iterator<Integer> iterator = set.iterator();
while (iterator.hasNext()) {
answer += chkPrimeNum(iterator.next());
}
return answer;
}
// ์ซ์๊ฐ ์์์ธ์ง ์ฒดํฌํ๋ ํจ์
private int chkPrimeNum(Integer num) {
// ํด๋น ์กฐํฉ ์ซ์์ค 0, 1์ ์์๊ฐ ์๋๋ฏ๋ก ์ ์ฒ๋ฆฌ
if (num == 0 || num == 1) {
return 0;
}
int endNum = (int) Math.sqrt(num); // ํด๋น ์ซ์ ๋ฃจํธ๊ฐ ๊ตฌํ ๋ค ์งํ
for (int i = 2; i <= endNum; i++) {
// ํด๋น ์ซ์๊ฐ i ์ซ์์ ๋ฐฐ์์ค ํ๋์ด๋ฉด ์์ X
if ((num % i) == 0) {
return 0;
}
}
return 1;
}
// ์ซ์ ํ์ํ๋ ํจ์(๋ฐฑํธ๋ํน)
// 1, 17, 7 ,71
private void permutation(String prefix, String numbers) {
int n = numbers.length();
if (!"".equals(prefix)) {
// ๋น๊ฐ์ด ์๋๋ฉด ๋ชจ๋ ์ซ์๋ฅผ set์ ํฌํจ
set.add(Integer.parseInt(prefix));
}
for (int i = 0; i < n; i++) {
permutation(prefix + numbers.charAt(i),
numbers.substring(0, i) + numbers.substring(i+1, n));
}
}
}
<aside> <img src="https://raw.githubusercontent.com/eirikmadland/notion-icons/master/v5/icon3/ul-github.svg" alt="https://raw.githubusercontent.com/eirikmadland/notion-icons/master/v5/icon3/ul-github.svg" width="40px" /> ์ฐธ์กฐ Github Code
</aside>
// numbers์ ์ ์ธ๋ ์ซ์๋ก ๋ชจ๋ ์ซ์ ํ์
permutation("", numbers);