티스토리 뷰

Algorithm

[Java/Programmers] Lv.1 소수 만들기

Jingni 징니 2021. 4. 12. 23:42

 

[Java/Programmers]

Lv.1 소수 만들기

( summer/winter coding (~2018) )

 

 

⬇︎ ⬇︎ ⬇︎ 문 제 링 크 ⬇︎ ⬇︎ ⬇︎

programmers.co.kr/learn/courses/30/lessons/12977

 

코딩테스트 연습 - 소수 만들기

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

programmers.co.kr

 

 


 

 

입/출력

 

(입력)

숫자들이 들어있는 배열 nums

  • nums에 들어있는 숫자의 개수는 3개 이상 50개 이하입니다.
  • nums의 각 원소는 1 이상 1,000 이하의 자연수이며, 중복된 숫자가 들어있지 않습니다.

 

(출력)

nums에 있는 숫자들 중 서로 다른 3개를 골라 더했을 때 소수가 되는 경우의 개수

 

 

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

        for(int i = 0; i < nums.length - 2; i++) {
            for(int j = i + 1; j < nums.length - 1; j++) {
                for(int k = j + 1; k < nums.length; k++) {
                    // 숫자 세개 더하기
                    int sum = nums[i] + nums[j] + nums[k];

                    // sum 값 소수 판별
                    if(isPrime(sum)) {
                        answer++;
                    }
                }
            }
        }
        return answer;
    }

    // 소수 판별 메소드
    public static boolean isPrime(int number) {
        // 0 과 1
        if(number == 0 || number == 1) {
            return false;
        }

        // 2
        if(number == 2) {
            return true;
        }

        // 그 외 숫자
        // 제곱근 함수 : Math.sqrt()
        for(int i = 2; i <= Math.sqrt(number); i++) {
            // 소수가 아닐경우
            if(number % i == 0) {
                return false;
            }
        }

        // 반복문에서 벗어난 경우 약수가 자기 자신과 1밖에 없는 경우이므로 true 반환.
        return true;
    }

 

 

후기

음.... 풀이방법이 바로 생각나지 않는건 아니었는데,

중첩 for문 쓰기 싫어서 조합으로 해보려다가 잘 안되서 그냥 중첩 for문을 사용해 문제를 해결했다.

검색해봐도 조합으로 푼 풀이는 잘 안나오길래 그냥 포기...ㅠㅠ

정답 맞춘 후 다른 분들 코드 보니까 조합으로 푼 코드가 더 복잡하고 길길래 중첩 for문으로 푸는게 더 나을수도 있겠다는 생각을 했다.

 

 

 

참고 링크

st-lab.tistory.com/81

 

JAVA [자바] - 소수 구하는 알고리즘 및 구현

들어가기 전에 소수 [Prime Number] 소수의 정의는 1보다 큰 자연수 중 1 과 그 수 자기 자신만을 약수로 갖는 자연수를 의미한다는 점은 누구나 알고 있을 것이다. 즉, 소수의 약수는 2개만을 갖고,

st-lab.tistory.com

youngest-programming.tistory.com/283

 

[알고리즘] 프로그래머스 소수 만들기 -Summer/Winter Coding(~2018)-

https://programmers.co.kr/learn/courses/30/lessons/12977 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업

youngest-programming.tistory.com

 

댓글
«   2024/09   »
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
Total
Today
Yesterday
공지사항
최근에 올라온 글