23주차 알고리즘

이동규·2024년 1월 3일

코테

목록 보기
14/22

//quiz.1
function solution(a, b) {
    let answer = '';
    // 1)
    let date = [31, 29, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31];
    // 2)
    let day = ['FRI', 'SAT', 'SUN', 'MON', 'TUE', 'WED', 'THU'];
    let numCount = 0; 
    let index = 0;

    // 3)
    for(let i=0; i<a-1; i++) {
        numCount += date[i]
    }
    // 3)
    numCount += b;

    // 4)
    index = (numCount - 1) % 7; // 1월 1일이 포함되므로 1을 뺀 후, 배열의 길이로 나눈 나머지를 구함
    // 5)
    answer = day[index];

    return answer;
}

function solution(k, m, score) {
    let answer = 0;

    // 1)
    score.sort((a, b)=> b-a);//내림차순 정렬

    for(var i=0; i<score.length; i+=m) {
        // 2)
        let values = score.slice(i, i+m);// m개씩 묶어서 value에 저장

        // 3)
        if(values.length == m) {
            // 4)
            answer += m * values[values.length-1];//가장 큰값 * 바구니 갯수 
        }
    }

    return answer;
}

// 1. 주어진 숫자 중 서로 다른 3개를 뽑는다.
// 2. 서로 다른 3개를 골라 더한다. 
// 3. 소수 판별

function solution(nums) {
    let answer = 0;
    let sum = 0;

    for(let i=0; i<nums.length; i++) {
        for(let j=i+1; j<nums.length; j++) {
            for(let k=j+1; k<nums.length; k++) {
                // 1)
                 if (nums[i] !== nums[j] && nums[j] !== nums[k] && nums[i] !== nums[k]) {
                     // 2)
                     sum = nums[i] + nums[j] + nums[k];   
                     // 3)
                     if(isPrime(sum)) {
                         answer += 1;
                     }
                }
            }
        }
    }
    return answer;
}

// 소수 판별
function isPrime(num) {
    for (let i = 2; i < num; i++)
        if (num % i === 0) return false;
    return true;
}

0개의 댓글