[Programmers] 코딩테스트

[Day 11] 수학, 반복문

문무스 2022. 11. 1. 15:06

주사위 개수

문제 설명:

머쓱이는 직육면체 모양의 상자를 하나 가지고 있는데 이 상자에 정육면체 모양의 주사위를 최대한 많이 채우고 싶습니다. 상자의 가로, 세로, 높이가 저장되어있는 배열 box와 주사위 모서리의 길이 정수 n이 매개변수로 주어졌을 때, 상자에 들어갈 수 있는 주사위의 최대 개수를 return 하도록 solution 함수를 완성해주세요.

제한사항:
  • box의 길이는 3입니다.
  • box[0] = 상자의 가로 길이
  • box[1] = 상자의 세로 길이
  • box[2] = 상자의 높이 길이
  • 1 ≤ box의 원소 ≤ 100
  • 1 ≤ n ≤ 50
  • n  box의 원소
  • 주사위는 상자와 평행하게 넣습니다.

작성한 코드:

function solution(box, n) {
    var answer = 1;
    var cnt = 0;
    
    while(cnt < box.length){
        answer = answer * Math.floor(box[cnt] / n);
        cnt++;
    }
    
  // answer =   Math.floor(box[0] / n) * Math.floor(box[1] / n )* Math.floor(box[2] / n);
       
    return answer;
}

합성수 찾기

문제 설명:

약수의 개수가 세 개 이상인 수를 합성수라고 합니다. 자연수 n이 매개변수로 주어질 때 n이하의 합성수의 개수를 return하도록 solution 함수를 완성해주세요.

제한사항:
  • 1 ≤ n ≤ 100

작성한 코드:

function solution(n) {
    var answer = [];
    var cnt = 1;
    
    while(cnt <= n){
        if(cnt != 2 && cnt != 3 && cnt != 5 && cnt != 7 && (cnt % 2 == 0 || cnt % 3 == 0 || cnt % 5 == 0|| cnt % 7 == 0)){
            answer.push(cnt)
        }
        cnt++;
    }
    
    return answer.length;
}

최댓값 만들기(1)

문제 설명:

정수 배열 numbers가 매개변수로 주어집니다. numbers의 원소 중 두 개를 곱해 만들 수 있는 최댓값을 return하도록 solution 함수를 완성해주세요.

제한사항:
  • 0 ≤ numbers의 원소 ≤ 10,000
  • 2 ≤ numbers의 길이 ≤ 100

작성한 코드:

function solution(numbers) {
    var maxNum1 = 0;
    var maxNum2 = 0;
    var result = 0;
    
    numbers.sort((a,b)=> a-b); // 배열을 크기순으로 정렬하기
    maxNum1 = numbers.pop(); // 배열에서 가장 큰 수 뽑아내기
    maxNum2 = numbers.pop(); // 가장 큰 수가 빠져나간 배열에서 다시 가장 큰 수 뽑아내기
    result = maxNum1 * maxNum2 // 가장 큰 수 2개 곱하기
    
    return result;
}

function solution(numbers) {
    var result = 0;
    
    numbers.sort((a,b)=> b-a); // 가장 큰 순서대로 정렬하면

    result = numbers[0] * numbers[1] // 인덱스 0, 1 곱하기
    return result;
}

팩토리얼

문제 설명:

i팩토리얼 (i!)은 1부터 i까지 정수의 곱을 의미합니다. 예를들어 5! = 5 * 4 * 3 * 2 * 1 = 120 입니다. 정수 n이 주어질 때 다음 조건을 만족하는 가장 큰 정수 i를 return 하도록 solution 함수를 완성해주세요.

  • i! ≤ n
제한사항:
  • 0 < n ≤ 3,628,800

작성한 코드:

function solution(n) {
    var answer = 1;
    var cnt = 1;
    
    while(cnt <= n){
        answer = answer * cnt;
        if(answer > n){
            return cnt - 1;
        } else if(answer == n){
            return cnt;
        }
        cnt++;
    }
    
    
}

출처:

https://school.programmers.co.kr/

 

프로그래머스

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

programmers.co.kr