ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • [프로그래머스] 소수 만들기
    Algorithm 2020. 9. 15. 12:25
    반응형

    주어진 숫자 중 3개의 수를 더했을 때 소수가 되는 경우의 개수를 구하려고 합니다. 숫자들이 들어있는 배열 nums가 매개변수로 주어질 때, nums에 있는 숫자들 중 서로 다른 3개를 골라 더했을 때 소수가 되는 경우의 개수를 return 하도록 solution 함수를 완성해주세요.

    제한사항

    • nums에 들어있는 숫자의 개수는 3개 이상 50개 이하입니다.
    • nums의 각 원소는 1 이상 1,000 이하의 자연수이며, 중복된 숫자가 들어있지 않습니다.
    import java.util.*;
    class Solution {
    
        static ArrayList<Integer> num = new ArrayList<>();
        
         public int solution(int[] nums) {
            boolean[] visited = new boolean[nums.length];
            combination(nums, visited, 0, nums.length, 3);
            return answerDecimal(num);
        }
    
        public void combination(int[] arr, boolean[] visited, int depth, int n, int k) {
            if (k == 0) {
                num.add(sum(arr, visited, n));
                return;
            }
            if (n != depth) {
                visited[depth] = true;
                combination(arr, visited, depth + 1, n, k - 1);
                visited[depth] = false;
                combination(arr, visited, depth + 1, n, k);
            }
    
        }
    
        int sum(int[] arr, boolean[] visited, int n) {
            int sum = 0;
            for (int i = 0; i < n; i++) {
                if (visited[i])
                    sum += arr[i];
            }
            return sum;
        }
    
        int answerDecimal(ArrayList<Integer> num) {
            int decimal = 0;
            for (int i : num) {
                boolean isPrime = true;
                for (int j = 2; j < i; j++) {
                    if (i % j == 0) {
                        isPrime = false;
                        break;
                    }
                }
                if (isPrime) decimal++;
            }
            return decimal;
        }
    
    }

    조합을 사용하여 배열에 담긴 숫자를 3개 뽑아서 더해 만들 수 있는 숫자를 다 구한 다음

    그 숫자 들중 소수를 찾아 풀이를 하였다.

    처음에는 Set으로 3개를 더한 숫자 중 중복을 없앴지만 테스트 케이스가 실패를 하길래

    ArrayList로 바꿔 주었다.

    반응형

    'Algorithm' 카테고리의 다른 글

    [프로그래머스] 탑  (0) 2020.09.15
    [프로그래머스] 스킬 트리  (0) 2020.09.15
    [프로그래머스] 캐시  (0) 2020.09.15
    [프로그래머스] 체육복  (0) 2020.09.15
    [프로그래머스] 같은 숫자는 싫어  (0) 2020.09.15

    댓글

Designed by Tistory.