1 분 소요

최빈값 구하기

출처 : https://school.programmers.co.kr/learn/courses/30/lessons/120812

문제

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

생각

  1. 정수 배열 array를 정렬한다.
  2. 첫번째 배열부터 세기 시작한다.
  3. 다른 숫자가 나온다면 그 전까지 세었던 숫자는 따로 기록하고, 이 값을 최빈값이라고 한다면 이 값을 넘으려면 이것보다 개수가 많아야함
  4. 만약 그렇지 않다면 그 값은 최빈값이 아니다.

풀이

function solution(array) {
    let soltedArray = array.sort((a,b) => a-b);
    let cnt = 0; 
    
    let Mod_Choi = -1; // 현재 최빈값 
    let choiRepeatCnt= 0; // 최빈값이 될때 몇번 반복?
    let repeatCnt = 0; // 현재 똑같은 숫자 몇번 반복?
    let beforeNumber = -1; //현재 숫자가 아닌 이전숫자
    let isDupChoi = false; //최빈값이 여러개일 때 
    while(cnt < array.length) {
        if(beforeNumber !== array[cnt]){
            repeatCnt = 1; 
        } else {
            repeatCnt = repeatCnt + 1;
        }
        
        if(repeatCnt === choiRepeatCnt ) {
            if(Mod_Choi !== array[cnt]){
                isDupChoi = true;    
            }
        }
        
        if(repeatCnt > choiRepeatCnt){
            Mod_Choi = array[cnt];
            choiRepeatCnt = repeatCnt;
            isDupChoi = false;
        }
        beforeNumber = array[cnt];
        cnt = cnt+1; 
    }
    if(isDupChoi) return -1;
    return Mod_Choi;
}

짝수는 싫어요

문제

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

생각

  1. 정수 n 이 입력되었을 때 n 이하의 홀수만 배열에 따로 기록하기
  2. 이때 cnt 값이 2 로 나누었을 때 나머지가 있으면 홀수, 없으면 짝수로 판별하기

풀이


function solution(n) {
    var answer = []; 
    let cnt = 1;
    while(cnt <= n) {
        if(cnt % 2 === 1) {
            answer.push(cnt);
        }
        cnt = cnt + 1;
    }
    return answer;
}