728x90
반응형
🚨문제
https://programmers.co.kr/learn/courses/30/lessons/12977?language=javascript
🔅예제 이해
숫자의 배열에서 3개를 골랐을 때 소수가 될 경우를 구합니다.
☺️나의 코드
Math.floor(), Math.sqrt()
function solution(nums) {
function isPrime(e){
//2은 무조건 소수이다.
if(e === 2){
return true;
}
//소수인지 검증
//소수인지를 확인하기 위해선 제곱근까지만 확인해도 된다.(꼭 필요한건 아니지만 시간복잡도에 이로움)
for(let i = 2; i <= Math.floor(Math.sqrt(e)); i++){
if(e % i === 0){
//나누어지는게 있으니 소수가 아니다.
return false;
}
}
//위에서 return되는게 없는 경우 소수이다.
return true;
}
var answer = 0;
for(let i = 0; i<nums.length; i++){
for(let i2 = i+1; i2<nums.length; i2++){
for(let i3 = i2+1; i3<nums.length; i3++){
let result = isPrime(nums[i] + nums[i2] + nums[i3]);
if(result){
answer ++;
}
}
}
}
return answer;
}
❗️ 풀이 순서
순서에 상관없는 숫자 3개 선택되어야 하기에, 반복문을 세 개를 쓴다.
경우의 수로 선택된 숫자들의 합이 소수인지 확인한다.
- 2는 무조건 소수이다.
- 소수는 제곱근 이하의 숫자로 나누었을때 나머지가 나오지 않는다.
소수인 경우, 더한다.
👍우수 코드
내 코드와 유사하여 제외
❤️배운 점
소수의 정의를 다시 공부했다. 소수를 체크하는 방법을 외워두어야겠다.
728x90
반응형