“ 지연되는 프로젝트에 인력을 더 투입하면 오히려 더 늦어진다. ”
- Frederick Philips Brooks
Mythical Man-Month 저자
코딩테스트 입문_수학,배열
1. 피자 나눠먹기
문제 설명
머쓱이네 피자가게는 피자를 일곱 조각으로 잘라 줍니다. 피자를 나눠먹을 사람의 수 n이 주어질 때, 모든 사람이 피자를 한 조각 이상 먹기 위해 필요한 피자의 수를 return 하는 solution 함수를 완성해보세요.
제한사항
- 1 ≤ n ≤ 100
입출력예
n | resuslt |
7 | 1 |
1 | 1 |
15 | 3 |
입출력예설명
- 7명이 최소 한 조각씩 먹기 위해서 최소 1판이 필요합니다.
- 1명은 최소 한 조각을 먹기 위해 1판이 필요합니다.
- 15명이 최소 한 조각씩 먹기 위해서 최소 3판이 필요합니다.
풀이
function solution(n) {
var answer = Math.ceil(n/7);
return answer;
}
n을 7로 나눠 올림하고, 모든 사람이 피자를 한 조각 이상 먹기 위해 필요한 피자의 수를 계산.
2. 피자 나눠먹기2
문제 설명
머쓱이네 피자가게는 피자를 여섯 조각으로 잘라 줍니다. 피자를 나눠먹을 사람의 수 n이 매개변수로 주어질 때, n명이 주문한 피자를 남기지 않고 모두 같은 수의 피자 조각을 먹어야 한다면 최소 몇 판을 시켜야 하는지를 return 하도록 solution 함수를 완성해보세요.
제한사항
1 ≤ n ≤ 100
입출력 예
n | result |
6 | 1 |
10 | 5 |
4 | 2 |
입출력 예 설명
- 6명이 모두 같은 양을 먹기 위해 한 판을 시켜야 피자가 6조각으로 모두 한 조각씩 먹을 수 있습니다.
- 10명이 모두 같은 양을 먹기 위해 최소 5판을 시켜야 피자가 30조각으로 모두 세 조각씩 먹을 수 있습니다.
- 4명이 모두 같은 양을 먹기 위해 최소 2판을 시키면 피자가 12조각으로 모두 세 조각씩 먹을 수 있습니다.
풀이
function solution(n) {
var answer = 0;
var pizzaCount = 1;
while(true){
if(pizzaCount * 6 % n === 0){
return pizzaCount;
}
pizzaCount++;
}
return answer;
}
무한 루프인 while을 사용해 피자 개수를 증가시키면서 계산을 수행합니다.
각 반복에서는 if 문을 사용해 피자 개수인 pizzaCount 를 n으로 나누었을 때 나머지가 0인지 확인하고 피자를 공평하게 나눌 수 있는 것이므로 pizzaCount를 반환합니다.
0이 아니라면 pizzaCount 를 1씩 증가시켜 다음 반복을 수행합니다.
3. 피자 나눠먹기
문제설명
머쓱이네 피자가게는 피자를 두 조각에서 열 조각까지 원하는 조각 수로 잘라줍니다. 피자 조각 수 slice와 피자를 먹는 사람의 수 n이 매개변수로 주어질 때, n명의 사람이 최소 한 조각 이상 피자를 먹으려면 최소 몇 판의 피자를 시켜야 하는지를 return 하도록 solution 함수를 완성해보세요.
제한사항
- 2 ≤ slice ≤ 10
- 1 ≤ n ≤ 100
입출력예
slice | n | result |
7 | 10 | 2 |
4 | 12 | 3 |
입출력예설명
- 10명이 7조각으로 자른 피자를 한 조각 이상씩 먹으려면 최소 2판을 시켜야 합니다.
- 12명이 4조각으로 자른 피자를 한 조각 이상씩 먹으려면 최소 3판을 시켜야 합니다.
풀이
function solution(slice, n) {
var answer = Math.ceil(n/slice);
return answer;
}
사람 수 n을 피자 조각 수 slice 로 나누어 필요한 피자 판 수를 계산한 뒤, 올림하여 반환
4. 배열의 평균값
문제설명
정수 배열 numbers가 매개변수로 주어집니다. numbers의 원소의 평균값을 return하도록 solution 함수를 완성해주세요.
제한사항
- 0 ≤ numbers의 원소 ≤ 1,000
- 1 ≤ numbers의 길이 ≤ 100
- 정답의 소수 부분이 .0 또는 .5인 경우만 입력으로 주어집니다.
입출력예
numbers | result |
[1,2,3,4,5,6,7,8,9,10] | 5.5 |
[89,90,91,92,93,94,95,96,97,98,99] | 94.0 |
입출력예설명
- numbers의 원소들의 평균 값은 5.5입니다.
- numbers의 원소들의 평균 값은 94.0입니다.
풀이
function solution(numbers) {
var sum = 0;
for(var i=0; i<numbers.length; i++){
sum += numbers[i];
}
var average = sum/numbers.length;
return Math.round(average * 2)/2;
}
nunmbers 배열의 모든 원소를 더해 sum 변수에 저장 후 sum을 numbers 배열의 길이로 나누어 평균값인 average를 계산합니다.
average를 소수 부분이 .0또는 .5인 경우로 반올림 하여 반환합니다.