문제 분류
기본문제?
배운점
key = [1,2,3] 일때 바로 저런식으로 a,b,c 변수에 할당할 수 있었다.
for (let [a, b, c] of key)
for in 도 될까 해서 테스트 해봤는데
var obj = {
a: 1,
b: 2,
c: 3,
};
for (var [prop, value] in obj) {
console.log(prop); //a
console.log(value); //undefined
}
안된다.
다음 처럼 접근을 해야한다.
for (var prop in obj) {
console.log(prop, obj[prop]); // a 1, b 2, c 3
}
내 풀이
nums = [1, 2, 3, 4];
function combination(arr, selectNum) {
let result = [];
if (selectNum == 1) return arr.map((v) => [v]);
arr.map((v, index, arr) => {
const fixed = v;
const restArr = arr.slice(index + 1);
const combinationArr = combination(restArr, selectNum - 1);
const combineFix = combinationArr.map((v) => [fixed, ...v]);
result.push(...combineFix);
});
return result;
}
function solution(nums) {
count = 0;
let key = combination(nums, 3);
for (let [a, b, c] of key) {
let sum = a + b + c;
let check = true;
for (let i = 2; i < sum; i++) {
if (sum % i == 0) {
check = false;
break;
}
}
if (check) count++;
}
console.log(count);
return count;
}
solution(nums);
다른분 풀이
배운점
N의 약수는 무조건 sqrt(N)의 범위에 존재한다는 것을 배웠다. (사실 까먹었다)
function isPrime(num) {
if (num === 2) return true;
for (let i = 2; i <= Math.floor(Math.sqrt(num)); i++) {
if (num % i === 0) return false;
}
return true;
}
// arr배열에서 selectNumber개의 요소를 뽑는 모든 경우를 배열로 반환하는 함수
const getCombinations = function (arr, selectNumber) {
const results = [];
if (selectNumber === 1) return arr.map((el) => [el]);
arr.forEach((fixed, index, origin) => {
const rest = origin.slice(index + 1);
const combinations = getCombinations(rest, selectNumber - 1);
const attached = combinations.map((el) => [fixed, ...el]);
results.push(...attached);
});
return results;
};
// num이 소수인지 여부를 반환하는 함수
function isPrime(num) {
if (num === 2) return true;
for (let i = 2; i <= Math.floor(Math.sqrt(num)); i++) {
if (num % i === 0) return false;
}
return true;
}
function solution(nums) {
const combinationResult = getCombinations(nums, 3);
let answer = 0;
combinationResult.forEach((e) => {
const sum = e[0] + e[1] + e[2];
if (isPrime(sum)) answer++;
});
return answer;
}
'공부기록 > 자바스크립트 코딩테스트' 카테고리의 다른 글
백준/JS 2738 행렬 덧셈 (0) | 2022.06.15 |
---|---|
프로그래머스/JS 키패드 누르기 (0) | 2022.06.15 |
자바스크립트 순열 , 조합 , 중복조합 (0) | 2022.06.14 |
프로그래머스/JS 신고결과받기 (2) (0) | 2022.06.13 |
프로그래머스/JS 신고결과받기 (1) (0) | 2022.06.13 |