Notice
Recent Posts
Recent Comments
Link
«   2024/07   »
1 2 3 4 5 6
7 8 9 10 11 12 13
14 15 16 17 18 19 20
21 22 23 24 25 26 27
28 29 30 31
Archives
Today
Total
관리 메뉴

csct3434

[level 2] 소수 찾기 - 42839 본문

프로그래머스

[level 2] 소수 찾기 - 42839

csct3434 2024. 2. 28. 20:05

문제 링크

 

프로그래머스

코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.

programmers.co.kr

import java.util.HashSet;
import java.util.Set;

class Solution {

    private Set<Integer> answer = new HashSet<>();

    public int solution(String numbers) {
        boolean[] visited = new boolean[numbers.length()];
        int[] selected = new int[numbers.length()];

        for (int count = 1; count <= numbers.length(); count++) {
            solve(numbers.toCharArray(), visited, selected, 0, count);
        }

        return answer.size();
    }

    private void solve(char[] numbers, boolean[] visited, int[] selected, int depth, int count) {
        if (depth == count) {
            StringBuilder stringBuilder = new StringBuilder();
            for (int i = 0; i < count; i++) {
                stringBuilder.append(selected[i]);
            }
            int number = Integer.parseInt(stringBuilder.toString());

            if (isPrime(number)) {
                answer.add(number);
            }
            return;
        }

        for (int i = 0; i < numbers.length; i++) {
            if (!visited[i]) {
                visited[i] = true;
                selected[depth] = numbers[i] - '0';
                solve(numbers, visited, selected, depth + 1, count);
                visited[i] = false;
            }
        }
    }

    private boolean isPrime(int number) {
        if (number <= 1) {
            return false;
        }

        for (int i = 2; i * i <= number; i++) {
            if (number % i == 0) {
                return false;
            }
        }
        return true;
    }
}

문제 링크

'프로그래머스' 카테고리의 다른 글

[level 2] 조이스틱 - 42860  (0) 2024.02.28
[level 2] 카펫 - 42842  (0) 2024.02.28
[level 2] H-Index - 42747  (0) 2024.02.28
[level 2] 가장 큰 수 - 42746  (0) 2024.02.28
[level 2] 더 맵게 - 42626  (0) 2024.02.28