프로그래머스 입문 Day3
최빈값 구하기
출처 : https://school.programmers.co.kr/learn/courses/30/lessons/120812
문제
최빈값은 주어진 값 중에서 가장 자주 나오는 값을 의미합니다. 정수 배열 array가 매개변수로 주어질 때, 최빈값을 return 하도록 solution 함수를 완성해보세요. 최빈값이 여러 개면 -1을 return 합니다.
생각
- 정수 배열 array를 정렬한다.
- 첫번째 배열부터 세기 시작한다.
- 다른 숫자가 나온다면 그 전까지 세었던 숫자는 따로 기록하고, 이 값을 최빈값이라고 한다면 이 값을 넘으려면 이것보다 개수가 많아야함
- 만약 그렇지 않다면 그 값은 최빈값이 아니다.
풀이
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 함수를 완성해주세요.
생각
- 정수 n 이 입력되었을 때 n 이하의 홀수만 배열에 따로 기록하기
- 이때 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;
}