“ 당신이 6개월 이상 한 번도 보지 않은 코드는 다른 사람이 다시 만드는 게 훨씬 더 나을 수 있다. ”
코딩테스트 입문 Day 4 수학, 배열
출처 : https://programmers.co.kr/
피자 나눠 먹기 (1)
문제
머쓱이네 피자가게는 피자를 일곱 조각으로 잘라 줍니다. 피자를 나눠먹을 사람의 수 n이 주어질 때, 모든 사람이 피자를 한 조각 이상 먹기 위해 필요한 피자의 수를 return 하는 solution 함수를 완성해보세요.
제한사항
- 1 ≤ n ≤ 100
입출력 예
n | result |
7 | 1 |
1 | 1 |
15 | 3 |
입출력 예 설명
입출력 예 #1
- 7명이 최소 한 조각씩 먹기 위해서 최소 1판이 필요합니다.
입출력 예 #2
- 1명은 최소 한 조각을 먹기 위해 1판이 필요합니다.
입출력 예 #3
- 15명이 최소 한 조각씩 먹기 위해서 최소 3판이 필요합니다.
solution.js
function solution(n) {
var answer = Math.ceil(n / 7);
return answer;
}
- Math.ceil(n / 7): 주어진 사람의 수 n을 7로 나눈 몫을 계산합니다. Math.ceil() 함수를 사용하여 올림을 수행합니다. 이는 피자를 7조각으로 자르고, 한 조각 이상을 먹을 수 있는 사람 수를 계산하는 것과 동일합니다.
- var answer = Math.ceil(n / 7);: 계산된 몫을 변수 answer에 저장합니다.
- return answer;: 계산된 값을 반환합니다.
피자 나눠 먹기 (2)
문제
머쓱이네 피자가게는 피자를 여섯 조각으로 잘라 줍니다. 피자를 나눠먹을 사람의 수 n이 매개변수로 주어질 때, n명이 주문한 피자를 남기지 않고 모두 같은 수의 피자 조각을 먹어야 한다면 최소 몇 판을 시켜야 하는지를 return 하도록 solution 함수를 완성해보세요.
제한사항
- 1 ≤ n ≤ 100
입출력 예
n | result |
6 | 1 |
10 | 5 |
4 | 2 |
입출력 예 설명
입출력 예 #1
- 6명이 모두 같은 양을 먹기 위해 한 판을 시켜야 피자가 6조각으로 모두 한 조각씩 먹을 수 있습니다.
입출력 예 #2
- 10명이 모두 같은 양을 먹기 위해 최소 5판을 시켜야 피자가 30조각으로 모두 세 조각씩 먹을 수 있습니다.
입출력 예 #3
- 4명이 모두 같은 양을 먹기 위해 최소 2판을 시키면 피자가 12조각으로 모두 세 조각씩 먹을 수 있습니다.
solution.js
function solution(n) {
var answer = 0;
let pizzaCount = 1;
while(true){
if(pizzaCount * 6 % n ===0){
return pizzaCount;
}
pizzaCount++;
}
return answer;
}
- var answer = 0;: 반환할 값을 초기화합니다. (사용되지 않습니다.)
- let pizzaCount = 1;: 피자의 판 수를 나타내는 변수 pizzaCount를 초기화합니다.
- while(true) { ... }: 무한 루프를 시작합니다.
- if(pizzaCount * 6 % n === 0) { ... }: 만약 피자 판 수 pizzaCount와 사람의 수 n을 곱한 값이 n으로 나누어 떨어진다면 조건을 만족하는 것입니다. 즉, 해당 피자 판 수로 피자를 나누어 먹을 수 있는 경우입니다.
- return pizzaCount;: 조건을 만족하는 피자 판 수를 반환하고 함수를 종료합니다.
- pizzaCount++;: 조건을 만족하지 않는 경우, 피자 판 수를 1씩 증가시킵니다.
피자 나눠 먹기 (3)
문제
머쓱이네 피자가게는 피자를 두 조각에서 열 조각까지 원하는 조각 수로 잘라줍니다. 피자 조각 수 slice와 피자를 먹는 사람의 수 n이 매개변수로 주어질 때, n명의 사람이 최소 한 조각 이상 피자를 먹으려면 최소 몇 판의 피자를 시켜야 하는지를 return 하도록 solution 함수를 완성해보세요.
제한사항
- 2 ≤ slice ≤ 10
- 1 ≤ n ≤ 100
입출력 예
slice | n | result |
7 | 10 | 2 |
4 | 12 | 3 |
입출력 예 설명
입출력 예 #1
- 10명이 7조각으로 자른 피자를 한 조각 이상씩 먹으려면 최소 2판을 시켜야 합니다.
입출력 예 #2
- 12명이 4조각으로 자른 피자를 한 조각 이상씩 먹으려면 최소 3판을 시켜야 합니다.
solution.js
function solution(slice, n) {
var answer = Math.ceil(n / slice);
return answer;
}
- Math.ceil(n / slice): 사람의 수 n을 피자의 조각 수(slice)로 나눈 몫을 올림하여 필요한 피자의 판 수를 계산합니다. 이는 한 사람당 최소 한 조각 이상을 먹기 위해 필요한 피자의 판 수를 구하는 것과 동일합니다.
- var answer = Math.ceil(n / slice);: 계산된 몫을 변수 answer에 저장합니다.
- return answer;: 계산된 값을 반환합니다.
배열의 평균
문제
정수 배열 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 |
입출력 예 설명
입출력 예 #1
- numbers의 원소들의 평균 값은 5.5입니다.
입출력 예 #2
- numbers의 원소들의 평균 값은 94.0입니다.
solution.js
function solution(numbers) {
var answer = 0;
let sum = 0;
for(let i=0; i<numbers.length; i++){
sum = sum + numbers[i];
}
return sum / numbers.length;
}
- var answer = 0;: 반환할 값을 초기화합니다. (사용되지 않습니다.)
- let sum = 0;: 배열의 총합을 저장할 변수 sum을 초기화합니다.
- for(let i=0; i<numbers.length; i++) { ... }: 주어진 숫자 배열 numbers를 순회합니다.
- sum = sum + numbers[i];: 각 요소를 sum에 더해줍니다. 이를 통해 배열의 총합을 계산합니다.
- return sum / numbers.length;: 배열의 총합을 배열의 길이로 나눈 값을 반환합니다. 이는 배열의 평균을 구하는 것과 동일합니다.