-
728x90
- 문자를 1~N(문자열길이)개 선택하여 줄세우는 경우의 수를 구한다. => 순열
- N개의 문자를 줄세웠다면, 소수인지 확인 후 Set에 넣어준다. => 에라토스테네스의 체
Set은 중복을 허용하지 않기 때문에, 같은 숫자가 들어와도 상관 없다.- Set에 들어있는 숫자의 개수를 리턴한다.
import java.util.*;class Solution {static boolean isUsed[];static Set<Integer> prime;public int solution(String numbers) {prime = new HashSet<Integer>();isUsed = new boolean[numbers.length()];for(int i = 1; i <= numbers.length(); i++)comb(i, "", numbers);return prime.size();}static void comb(int N, String num, String numbers) {if(num.length() == N) {int n = Integer.parseInt(num);if(n > 1 && isPrime(n))prime.add(n);}for(int i = 0; i < numbers.length(); i++) {if(!isUsed[i]) {isUsed[i] = true;comb(N, num + numbers.charAt(i), numbers);isUsed[i] = false;}}}static boolean isPrime(int n) {for (int i = 2; i <= Math.sqrt(n); i++) {if(n % i == 0)return false;}return true;}}데롱디롱희희.. (๑′ᴗ‵๑)
'알고리즘 풀이 > 프로그래머스' 카테고리의 다른 글
[level2] 프로그래머스 - 전화번호 목록(JAVA) (0) 2021.09.14 [level2] 프로그래머스 - 카펫(JAVA) (0) 2021.09.14 [level2] 프로그래머스 - 주식가격(JAVA) (0) 2021.09.14 [level2] 프로그래머스 - 기능개발(JAVA) (0) 2021.09.14 [level3] 프로그래머스 - 여행경로(JAVA) (0) 2021.09.14