한번씩 읽고 가세요.
“ 지연되는 프로젝트에 인력을 더 투입하면 오히려 더 늦어진다. ”
- Frederick Philips Brooks
Mythical Man-Month 저자
728x90
최빈값 구하기
문제 설명
최빈값은 주어진 값 중에서 가장 자주 나오는 값을 의미합니다. 정수 배열 array가 매개변수로 주어질 때, 최빈값을 return 하도록 solution 함수를 완성해보세요. 최빈값이 여러 개면 -1을 return 합니다.
제한 조건
- 0 < array의 길이 < 100
- 0 ≤ array의 원소 < 1000
예시
입출력 예
arrayreturn
[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 = [];
// array를 forEach() 반복문을 돌려
// obj에 값이 없으면 값을 만들고 1을 넣어주고
// obj에 값이 있으면 기존 값 +1을 해준다.
array.forEach((n) => {
obj[n] = ++obj[n] || 1;
});
// 값과 그 값의 갯수를 정의해 둔 obj를 array에 넣어준다.
// ex) [[1, 1], [2, 1], [3, 3], [4, 1]]
for (let key in obj) {
answer.push([key, obj[key]]);
}
// answer 배열을 갯수 기준으로 내림차순 정렬을 해준다.
// ex) [[3, 3], [4, 1], [2, 1], [1, 1]]
answer.sort((a, b) => b[1] - a[1]);
// 최빈값이 여러 개면 -1을 반환해야 하기 때문에 확인한다.
if (answer.length > 1 && answer[0][1] === answer[1][1]) return -1;
// 여러개가 아니라면 정렬한 처음 값을 반환한다.
return Number(answer[0][0]);
}
console.log(solution([1, 2, 3, 3, 3, 4])); // 3
console.log(solution([1, 1, 2, 2])); // -1
console.log(solution([1])); // 1
문제 설명
머쓱이네 피자가게는 피자를 여섯 조각으로 잘라 줍니다. 피자를 나눠먹을 사람의 수 n이 매개변수로 주어질 때, n명이 주문한 피자를 남기지 않고 모두 같은 수의 피자 조각을 먹어야 한다면 최소 몇 판을 시켜야 하는지를 return 하도록 solution 함수를 완성해보세요.
제한사항
1 ≤ n ≤ 100
입출력 예
nresult6 | 1 |
10 | 5 |
4 | 2 |
입출력 예 설명
입출력 예 #1
- 6명이 모두 같은 양을 먹기 위해 한 판을 시켜야 피자가 6조각으로 모두 한 조각씩 먹을 수 있습니다.
입출력 예 #2
- 10명이 모두 같은 양을 먹기 위해 최소 5판을 시켜야 피자가 30조각으로 모두 세 조각씩 먹을 수 있습니다.
입출력 예 #3
- 4명이 모두 같은 양을 먹기 위해 최소 2판을 시키면 피자가 12조각으로 모두 세 조각씩 먹을 수 있습니다.
풀이
function solution(n) {
// 한 판에 여섯 조각
let pizzaBox = 6
// 같은 수로 나눠질 때까지 +6
while(pizzaBox%n !== 0) {
pizzaBox+=6
}
// 박스 수 반환
return pizzaBox/6
}