-
[프로그래머스] 소수 찾기 - 완전탐색코딩테스트 문제풀이 2021. 10. 2. 00:18
문제
풀이
import java.util.*; class Solution { public int solution(String numbers) { int answer = 0; Set<Integer> allNumbers = new HashSet<Integer>(); getAllNumbers(allNumbers, numbers, ""); for (Integer num : allNumbers) { if (isPrime(num)) answer++; } return answer; } public void getAllNumbers(Set<Integer> allNumbers, String numbers, String numStr) { if (!numStr.equals("")) allNumbers.add(Integer.parseInt(numStr)); if (numbers.length() == 0) return; for (int i = 0; i < numbers.length(); i++) { StringBuffer sb = new StringBuffer(numbers); String newNumStr = numStr + numbers.substring(i, i+1); String newNumbers = sb.deleteCharAt(i).toString(); getAllNumbers(allNumbers, newNumbers, newNumStr); } } public boolean isPrime(int number) { if (number < 2) return false; for (int i = 2; i * i <= number; i++) { if (number % i == 0) return false; } return true; } }
- 재귀함수를 통해 모든 경우의 수를 구한다.
- 구해온 모든 경우의 수를 소수판별한다.
출처: https://programmers.co.kr/learn/courses/30/lessons/42839
'코딩테스트 문제풀이' 카테고리의 다른 글
[프로그래머스] 베스트앨범 - 해시 (0) 2021.10.02 [백준 11279] 최대힙 - 우선순위 큐 (0) 2021.10.02 [백준 2231] 분해합 (0) 2021.09.22 [백준 11407] 동전 0 (0) 2021.09.22 [백준 2606] 바이러스 (0) 2021.09.19