코딩테스트/프로그래머스

[프로그래머스]소수 만들기 - Java

GAEBAL 2022. 11. 7. 22:27
728x90

문제

https://school.programmers.co.kr/learn/courses/30/lessons/12977

 

프로그래머스

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

programmers.co.kr

 

 

풀이

Level 1 문제임

 

문제를 보자마자 dfs로 풀었는데 풀고 보니까

제모옥..은... 완전 탐색으로 하겠습니다... 근데 이제,, dfs를 곁들인!

이 되어 버렸네요?

 

자세한건 주석으로 !

 

 

코드

// 코딩테스트 연습 - Summer/Winter Coding(~2018) - 소수 만들기
// https://school.programmers.co.kr/learn/courses/30/lessons/12977

package PROGRAMMERS.level1;

public class Num12977_소수만들기 {
    static class Solution {
        static int answer;

        public int solution(int[] nums) {
            answer = 0;

            dfs(nums, 0, 0, 0);

            return answer;
        }

        public static void dfs(int[] nums, int start, int depth, int sum) {
            if (depth == 3) {
                if (isPrime(sum)) {
                    answer++;
                }
                return;
            }

            for (int i = start; i < nums.length; i++) {
                dfs(nums, i + 1, depth + 1, sum + nums[i]);
            }
        }

        public static boolean isPrime(int num) {
            for (int i = 2; i < num / 2; i++) {
                if (num % i == 0) {
                    return false;
                }
            }

            return true;
        }
    }

    public static void main(String[] args) {
        Solution sol = new Solution();

        System.out.println(sol.solution(new int[]{1, 2, 3, 4}));
        System.out.println(sol.solution(new int[]{1, 2, 7, 6, 4}));
    }
}

 

728x90