Just Do IT!

[프로그래머스 Level 0] 120810 - 120814 (JavaScript) 본문

코딩테스트 준비/프로그래머스

[프로그래머스 Level 0] 120810 - 120814 (JavaScript)

MOON달 2022. 11. 14. 19:40
728x90
반응형

120810. 나머지 구하기

문제 설명
정수 num1, num2가 매개변수로 주어질 때, num1를 num2로 나눈 나머지를 return 하도록 solution 함수를 완성해주세요.

제한사항
0 < num1 ≤ 1000 < num2 ≤ 100

입출력 예
num1 num2 result
3 2 1
10 5 0
function solution(num1, num2) {
    let answer = num1 % num2
    return answer;
}

 

 

 

120811. 중앙값 구하기

문제 설명
중앙값은 어떤 주어진 값들을 크기의 순서대로 정렬했을 때 가장 중앙에 위치하는 값을 의미합니다. 예를 들어 1, 2, 7, 10, 11의 중앙값은 7입니다. 정수 배열 array가 매개변수로 주어질 때, 중앙값을 return 하도록 solution 함수를 완성해보세요.

제한사항
array의 길이는 홀수입니다.
0 < array의 길이 < 100
-1,000 < array의 원소 < 1,000

입출력 예
array result
[1, 2, 7, 10, 11] 7
[9, -1, 0] 0
function solution(array) {
    var answer = 0;
    
    // 배열을 정렬하기
    array.sort(function(a, b) {
        return a - b;
    });
    
    // 절반으로 나누어서 중앙 계산하기
    answer = Math.floor(array.length / 2)

    return array[answer]
}

 

 

 

120812. 최빈값 구하기

문제 설명
최빈값은 주어진 값 중에서 가장 자주 나오는 값을 의미합니다. 정수 배열 array가 매개변수로 주어질 때, 최빈값을 return 하도록 solution 함수를 완성해보세요. 최빈값이 여러 개면 -1을 return 합니다.

제한사항
0 < array의 길이 < 100
0 ≤ array의 원소 < 1000

입출력 예
array result
[1, 2, 3, 3, 3, 4] 3
[1, 1, 2, 2] -1
[1] 1
  • 첫 번째 풀이 (테스트 케이스 통과해서 제출했는데, 일부 런타임 에러 발생)
function solution(array) {

    // array의 길이가 1인 경우 그냥 그 값을 반환해준다
    if (array.length === 1) return array[0];

    const obj = [];
    const answer = [];

    // forEach() 반복문 : 배열에 있는 각 요소에 대해 오름차순으로 한번씩 실행하는 것
    // obj에 값이 있으면 값을 만들고 1을 넣어주고, 값이 있으면 기존값에서 +1
    array.forEach((n) => {
        obj[n] = ++obj[n] || 1;
    });

    // 값과 그 값의 갯수를 정의한 obj를 array에 넣어주기
    for (let key in obj) {
        answer.push([key, obj[key]]);
    }

    // 갯수 기준으로 내림차순 정렬
    // sort() : 배열의 요소를 적절한 위치에 정렬한 후 그 배열을 반환한다
    answer.sort((a, b) => b[1] - a[1]);

    // 최빈값이 여러 개면 -1을 반환
    if (answer[0][1] === answer[1][1]) return -1;

    return Number(answer[0][0])
}
  • 두 번째 풀이 (구글링해서 찾아본 풀이를 이용)
function solution(array) {
    let map = new Map();
    
    // Map 객체 초기화
    for(let i = 0; i <= Math.max(...array); i++){
        map.set(i, 0);    
    }
    
    // array 배열의 원소값과 일치하는 Map 객체의 key를 증가시킨다
    for(let i = 0; i < array.length; i++){
        map.set(array[i], map.get(array[i]) + 1);
    }
    
    // Map 객체의 value만 모아서 배열로 만든다
    let arr = Array.from(map.values());
    
    // 최대값 산출
    let max = Math.max(...arr);
    
    // 최대값이 하나만 있다면 max, 여러 개 중복된다면 -1 출력
    if(arr.indexOf(max) !== arr.lastIndexOf(max)){
        return -1;
    } else {
        return arr.indexOf(max);
    }
}

 

 

 

120813. 짝수는 싫어요

문제 설명
정수 n이 매개변수로 주어질 때, n 이하의 홀수가 오름차순으로 담긴 배열을 return하도록 solution 함수를 완성해주세요.

제한사항
1 ≤ n ≤ 100

입출력 예
n result
10 [1, 3, 5, 7, 9]
15 [1, 3, 5, 7, 9, 11, 13, 15]
function solution(n) {
    var answer = [];
    
    for(let i = 1; i <= n; i++) {
        if(i % 2 === 1) {
            answer.push(i);
        }
    }
    
    return answer;
}

 

 

 

120814. 피자 나눠 먹기 (1)

문제 설명
머쓱이네 피자가게는 피자를 일곱 조각으로 잘라 줍니다. 피자를 나눠먹을 사람의 수 n이 주어질 때, 모든 사람이 피자를 한 조각 이상 먹기 위해 필요한 피자의 수를 return 하는 solution 함수를 완성해보세요.

제한사항
1 ≤ n ≤ 100

입출력 예
n result
7 1
1 1
15 3

입출력 예 설명
입출력 예 #1
7명이 최소 한 조각씩 먹기 위해서 최소 1판이 필요합니다.
입출력 예 #2
1명은 최소 한 조각을 먹기 위해 1판이 필요합니다.
입출력 예 #3
15명이 최소 한 조각씩 먹기 위해서 최소 3판이 필요합니다.
function solution(n) {
    return n % 7 === 0 ? Math.floor(n / 7) : Math.floor(n / 7) + 1;
}

 

728x90