코딩테스트

[프로그래머스 / lv 2] 소수찾기(JAVA)

lyndaa 2023. 5. 20. 17:21

문제


풀이방법

  • 소수를 판단하는 함수와 dfs방식으로 숫자 조합을 만드는 함수를 구현
  • 중복없이 담기위해 HashSet 생성하여 모든 숫자 조합을 담은 후 소수를 판단하여 카운트

코드

import java.util.*;
class Solution {
    HashSet<Integer> numbersSet = new HashSet<>();
    public int solution(String numbers) {
        dfs("", numbers);

        int count = 0;
        Iterator<Integer> it = numbersSet.iterator();
        while (it.hasNext()) {
            int number = it.next();
            if (isPrime(number))
                count++;
        }
        return count;
    }
    public boolean isPrime(int num) {
        if (num == 0 || num == 1)
            return false;
        int lim = (int)Math.sqrt(num);

        for (int i = 2; i <= lim; i++)
            if (num % i == 0)
                return false;

        return true;
    }

    public void dfs(String str, String numbers) {
        if (!str.equals(""))
            numbersSet.add(Integer.valueOf(str));

        for (int i = 0; i < numbers.length(); i++)
            dfs(str + numbers.charAt(i), numbers.substring(0, i) + numbers.substring(i + 1));

    }
}