> 기초/코테 연습

TIL-2024.04.09 - 코테연습 - 기사단원의 무기(1).programmers

Janku 2024. 4. 9. 12:38

 

 

 

URL:

https://school.programmers.co.kr/learn/courses/30/lessons/136798

 

프로그래머스

코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.

programmers.co.kr

 

 

 

내가 푼 코드 (1차):

 

// URL > https://school.programmers.co.kr/learn/courses/30/lessons/136798

const solution = (number, limit, power) => {

    const isPrime = (targetNumber) => {
        const tempArr = []
        for(let i = 1; i <= targetNumber; i++){
            if(targetNumber % i === 0 ) tempArr.push(i)
        }
        return tempArr.length;
    }
    
    
    let result = 0;

    for(let i =1 ; i <= number; i++){
        let temp = isPrime(i)
        if(temp <= limit) result += temp;
        else result += power
    }

    return result

};
console.log("result:: ", solution(5, 3, 2)); // 10
// console.log("result:: ", solution(10, 3, 2));  // 21

 

코드상 문제는 없으나, 시간 복잡도 이슈로 시간 초과하여 실패.

 

 

 

 

 

내가 푼 코드 (2차):

// URL > https://school.programmers.co.kr/learn/courses/30/lessons/136798

const solution = (number, limit, power) => {
    let result = 0;

    // isPrime 함수는 주어진 숫자가 약수인지 판별하는 함수
    const isDivisor = (targetNumber) => {
        let count = 0;
        for(let i = 1; i <= Math.sqrt(targetNumber); i++) {
            // i는 1부터 targetNumber의 제곱근까지 증가하는 수
            if(i === Math.sqrt(targetNumber)) {
                count += 1; // 제곱근이 정수인 경우 count 1 증가
            } else if(targetNumber % i == 0) {
                count += 2; // 약수가 발견될 때 count 2 증가 (약수의 짝을 계산하기 위해)
            }
        }
        return count; // 약수의 개수를 반환
    }


    for(let i = 1; i <= number; i++) {
        let temp = isPrime(i); // i가 소수인지 판별하여 약수의 개수를 얻음
        if(temp <= limit) {
            result += temp; // 약수의 개수가 limit 이하인 경우 result에 추가
        } else {
            result += power; // 약수의 개수가 limit 초과인 경우 power를 result에 추가
        }
    }

    return result; // 최종 결과 반환
};

console.log("result:: ", solution(5, 3, 2)); // 10
// console.log("result:: ", solution(10, 3, 2));  // 21
// console.log("result:: ", solution(5, 3, 2)); // 10
// console.log("result:: ", solution(10, 3, 2));  // 21