본문 바로가기
[ 다먹살 ]/- Coding

[프로그래머스] 레벨1 소수만들기

by 엉망으로살기 2021. 7. 22.
반응형

https://programmers.co.kr/learn/courses/30/lessons/12977?language=java 

 

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

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

programmers.co.kr

 

for문을 많이쓰면 시간복잡도가 매우 증가한다고 알고 있는데 이 문제는 레벨1이어서 그런진 몰라도 4중 for문까지 허용이 되었다.

아마 nums의 배열 갯수가 50개로 제한이 되어있어서 통과된 것 같다. 사실 제출하면서 시간초과가 뜰까봐 조마조마했다.

(소수 판별)

 

 

class Solution
{
    public int solution(int[] nums)
    {
        int cnt = 0;
        boolean chk = true;
        
        for(int i=0; i<nums.length; i++)
        {
            for(int j=i+1; j<nums.length; j++)
            {
                for(int k=j+1; k<nums.length; k++)
                {
                    int temp = nums[i] + nums[j] + nums[k];
                    chk = true;
            
                    for(int x=2; x*x<=temp; x++)
                    {
                        if(temp%x==0)
                        {
                            chk = false;
                        }
                    }

                    if(chk)
                    {
                        cnt++;
                    }
                }
            }
        }
        
        return cnt;
    }
}

반응형

댓글