Custom hook?
학습 후 정리
Immer.js?
학습 후 정리
프로그래머스 문제 풀이
function solution(nums) {
let num = Math.floor(nums.length / 2)
const poketmons = [...new Set(nums)]
const answer = poketmons.length > num ? num :poketmons.length
return answer
}
function solution(a, b) {
const days = ['SUN','MON','TUE','WED','THU','FRI','SAT']
const month = a.toString().padStart(2,'0')
const day = b.toString().padStart(2,'0')
const date = new Date(`2016-${month}-${day}`)
return days[date.getUTCDay()];
}
function solution(number, limit, power) {
const measureNumber = getMeasureNumber(number)
const answer = measureNumber.reduce((acc,cur) => { return cur <= limit ? acc + cur : acc + power} , 0)
return answer;
}
function getMeasureNumber (number){
let result = []
for(let i = 1; i <= number ; i ++){
let count = 0
for ( let j = 1 ; j * j <= i ; j ++){
if(i % j === 0){
count++
if(j !== i / j){
count++
}
}
}
result.push(count)
}
return result
}

A[i % A.length]를 하면 주기적으로 배열 내부의 같은 자리의 값을 불러 비교할 수 있는 것을 활용
function solution(answers) {
var answer = [];
const A = '12345'.split('')
const B = '21232425'.split('')
const C = '3311224455'.split('')
const aResult = answers.filter((item,i) => item === Number(A[i % A.length])).length;
const bResult = answers.filter((item,i) => item === Number(B[i % B.length])).length;
const cResult = answers.filter((item,i) => item === Number(C[i % C.length])).length;
const max = Math.max(aResult,bResult,cResult)
if(aResult === max) answer.push(1)
if(bResult === max) answer.push(2)
if(cResult === max) answer.push(3)
return answer;
}
function solution(k, m, score) {
// 사과 상태에 따라 1~k점으로 분류됨
// 한 상자에 사과를 m개씩 담아 포장
// 상자에 담긴 사과 중 가장 낮은 점수가 p점인 경우, 사과 한 상자의 가격은 p*m
var answer = 0;
const boxAmount = Math.floor(score.length / m)
const sortedApple = score.sort((a,b) => b-a)
for (let i =0; i < boxAmount; i++){
const curBox = sortedApple.slice(i*m, i*m+m)
const result = curBox[m-1] * m
answer += result
}
return answer;
}
function solution(nums) {
var answer = 0;
const primes = []
for (let i = 0; i < nums.length - 2; i++) {
for (let j = i + 1; j < nums.length- 1; j++) {
for (let k = j + 1; k < nums.length; k++) {
primes.push(nums[i] + nums[j] + nums[k]);
}
}
}
primes.forEach((item,idx) => isPrime(item) ? answer += 1 : null )
return answer;
}
function isPrime(n) {
let count = 0;
for (let i = 2; i <= Math.sqrt(n); i++) {
n % i === 0 ? count++ : null
}
return count > 0 ? false : true
}