알고리즘/프로그래머스

[프로그래머스] 소수 만들기 for JAVA

정석이 2021. 11. 26. 17:43

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

 

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

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

programmers.co.kr

 

 

문제

 

 

 


 

내가 푼 방법

 

 

내가 풀려고 시도한 방법은 우선 배열에서 3개의 수를 3중 for문으로 더하고

 

그 수가 2부터 자기 자신 전까지의 수 중에서 나누어지는게 있는지 찾는다.

 

 

3중 for문을 사용해서 시간 복잡도가 엉망인 코드이다.

 

 

 

 

 

코드


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

        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++){
                    n = nums[i] + nums[j] + nums[k];
                    for(int l = 2; l < n+1; l++){
                        if(n % l == 0 && l != n) break;
                        else if(l == n) answer++;
                    }         
                }
        
          
        return answer;
    }
}

 

 

 

 

성능

 

 

 

 


 

다른 사람의 풀이

 

 

 

 

 

아하 이분도 나랑 똑같이 풀었다. 다만 함수를 따로 만들어서 코드를 깔끔하게 했고

 

 

소수임을 검사할 때 2~n까지 모두 나누어보는게 아니라 2~루트2 까지만 검사했다. (이거 했다가 바꿨는뎅..)

 

 

 

 

 

 

다들 이렇게 풀었네....? 저게 정석 코드인가보다....