본문 바로가기
정리/알고리즘

완전탐색 - 소수찾기

by Hudini30 2022. 2. 19.

해당 문제는 입력 받은 문자열을 각 하나의 문자 조각으로 나누고 각 문자 조합을 전부 만들어 해당 문자조합이 숫자로 파싱했을때 소수인 경우에만 set에 넣어주도록 했습니다. set은 중복이 없으므로 이후 set의 사이즈를 구함으로서 소수의 갯수를 구할 수 있었습니다.

public int solution(String numbers) {
        Set<Integer> primeNumberSet = new HashSet<>();
        List<String> splitNumberStrings = new ArrayList<>();

        for(int i = 0; i < numbers.length(); i++) {
            splitNumberStrings.add(numbers.substring(i, i + 1));
        }

        makeOtherNumber(primeNumberSet, "", splitNumberStrings);

        return primeNumberSet.size();
    }
    public void makeOtherNumber(Set<Integer> primeNumberSet, String preString, List<String> splitNumbers) {
        for (int i = 0; i< splitNumbers.size(); i++) {
            List<String> copiedList = new ArrayList<>(splitNumbers);

            String combineString = preString + copiedList.get(i);
            int parseNumber = Integer.parseInt(combineString);
            if (isPrimeNumber(parseNumber)) {
                primeNumberSet.add(Integer.parseInt(combineString));
            }
            copiedList.remove(i);
            makeOtherNumber(primeNumberSet, combineString, copiedList);
        }
    }
    public boolean isPrimeNumber(int number) {
        if (number <= 1) {
            return false;
        }
        for(int i = 2; i < number; i++) {
           if(number % i == 0) {
               return false;
           }
        }
        return true;
    }

'정리 > 알고리즘' 카테고리의 다른 글

탐욕법 - 큰 수 만들기  (0) 2022.02.23
완전탐색 - 카펫  (0) 2022.02.21
완전탐색 - 모의고사  (0) 2022.02.17
정렬 - H-Index  (0) 2022.02.16
정렬-가장 큰 수  (0) 2022.02.15

댓글