TIL 2024-05-29

박요셉·2024년 5월 29일

TIL

목록 보기
30/60

오전

  1. Custom hook?
    학습 후 정리

  2. Immer.js?
    학습 후 정리

  3. 프로그래머스 문제 풀이

  • 포켓몬
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
}
  • 2016년
    new Date 썻다고 뭔가 부정적인 의견들이 많던데 그들의 생각에선 왜 이게 안되는거지?
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
}

오후

  1. 프로그래머스 풀이
  • 모의고사

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;
}

저녁

  1. 프로그래머스 풀이
  • 소수 찾기
    흠...복붙 귀찮아 블로그에 있음
  • 소수 만들기
    3개를 더해서 만들어야되는 반복문을 짜야대? 3중 반복으로 바로 박아라 ㅡㅡ
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
    }
profile
개발자 지망생

0개의 댓글