프로그래머스[초급]
배열의 길이가 3이상인 배열이 1개 주어지고, 배열의 요소는 1이상 1000이하의 숫자로 중복된 숫자는 없다.
이 배열에서 3개의 요소를 더해서 (중복 X) 소수인 경우수를 구해서 리턴해라
일단 소수란 : 1과 자기 자신으로 밖에 나눠지지 않는 수를 소수라고 한다.
즉 i값은
처음 부터 (0) ~ 배열.length-2 까지만 가능하다 왜냐하면 i다음에는 j 값, k 값이 들어가야 하므로
j값은
i값보다 1큰수 부터 ~ 배열.length-1 까지만 가능하다 왜냐하면 j값 다음에는 k 값이 필요하니까
k 값은
i,j 값 다음부터 가능하므로 j(i+1)+1 ~ 배열의 끝까지 가능하다.
그래서 총 이 3개의 숫자를 더해서 소수인지 판단하고 소수일경우 result 를 1씩 더해서 소수의 갯수를 판단한다.
소수 판별은 1과 자기자신으로 밖에 나눠지지 않기 때문에 자기 자신과 1을 제외한 수에서 나누어지면 false를 리턴하게 했다.
============================================================================================
내가 짠 소수 판별식은 for문이 오래 돌아가기 때문에 숫자가 커질수록 성능이 저하될 가능성이 있다.
다른 사람들은 주어진 수의 제곱근을 이용하여 소수를 판별했다. 어떤 말이냐 하면
만약에 주어진 숫자가 100이라고 하면
100의 제곱근을 기준으로 서로 대칭되기 때문에 제곱근 이하의 값으로 나누어지는지 판단해도 된다.,
'Algorithm' 카테고리의 다른 글
[Algorithm/Lamda] 함수형 인터페이스 (0) | 2022.05.28 |
---|---|
[Algorithm/Lamda] Lamda식에 대해 공부해보자 (0) | 2022.05.28 |
[Algorithm] 2개의 배열 내적 (0) | 2022.05.28 |
[Algorithm] 음수와 양수의 합을 구하기 (0) | 2022.05.28 |
[Algorithm] 없는 숫자 더하기 (0) | 2022.05.27 |