-
[프로그래머스] 소수 찾기 (완전탐색)ALGORITHM/PROGRAMMERS 2021. 7. 28. 15:25
https://programmers.co.kr/learn/courses/30/lessons/42839?language=java
2021-07-28
12345678910111213141516171819202122232425262728293031323334353637383940414243import java.util.*;class Solution {public static String[] arr;public static boolean[] vtd;public static int answer;public static HashSet<Integer> set;static boolean prime(int num) {if(num == 0 || num == 1) return false;for(int i = 2; i <= Math.sqrt(num); i++) if(num % i == 0) return false;return true;}static void solve(String tmp, int cnt) {if(cnt == tmp.length()) {int num = Integer.parseInt(tmp);if(!set.contains(num)) {set.add(num);if(prime(num)) answer++;}return;}for(int i = 0; i < arr.length; i++) {if(!vtd[i]) {vtd[i] = true;solve(tmp + arr[i], cnt);solve(tmp + arr[i], cnt+1);vtd[i] = false;}}}static int solution(String numbers) {answer = 0;set = new HashSet<>();arr = new String[numbers.length()];vtd = new boolean[numbers.length()];for(int i = 0; i < numbers.length(); i++) arr[i] = String.valueOf(numbers.charAt(i));solve("", 1);return answer;}}cs #문제풀이
사실 재귀에 좀 약한 편이다,,, 깔끔한 구현일지는 모르겠다.
hashset으로 중복을 걸렀고, 문자열 하나하나의 조합마다 prime 함수로 소수인지 아닌지 체크했다.
'ALGORITHM > PROGRAMMERS' 카테고리의 다른 글
[프로그래머스] 주식가격 (0) 2021.07.28 [프로그래머스] 프린터 (0) 2021.07.28 [프로그래머스] 짝지어 제거하기 (2017 팁스타운) (0) 2021.07.28 [프로그래머스] 이진 변환 반복하기 (0) 2021.07.27 [프로그래머스] 기능개발 (0) 2021.07.26