피자 자눠 먹기(1)
머쓱이네 피자가게는 피자를 일곱 조각으로 잘라 줍니다. 피자를 나눠먹을 사람의 수 n이 주어질 때, 모든 사람이 피자를 한 조각 이상 먹기 위해 필요한 피자의 수를 return 하는 solution 함수를 완성해보세요.
- 1 ≤ n ≤ 100
// 1.모든 사람이 한 조각 이상 먹는다
// 1-7명 : 1판, 8-14명 : 2판 ...
const solution = n => Math.ceil(n / 7);
// 다른 사람의 풀이
function solution(n) {
let pizza = 7;
let result = pizza;
if(n > result) {
for(let i = 0; i < (n / pizza) - 1; i++) {
result += pizza;
}
};
return answer = result / 7;
}
1) 한 판에 7조각인데, 모든 사람이 각각 1조각 이상 먹게 만들려면 한 판당 7명이 적절하다.
2) 따라서 1판이 있고, 8명이라면 2판이 존재해야 한다.
3) 즉, 7의 배수를 기점으로 +1판이 필요하다.
<다른 사람의 풀이에 대한 이해>
뭔가 지저분한 느낌이지만, 이렇게 계산식을 세우는 게 도움이 된다고 생각한다.
피자 나눠 먹기(2)
머쓱이네 피자가게는 피자를 여섯 조각으로 잘라 줍니다. 피자를 나눠먹을 사람의 수 n이 매개변수로 주어질 때, n명이 주문한 피자를 남기지 않고 모두 같은 수의 피자 조각을 먹어야 한다면 최소 몇 판을 시켜야 하는지를 return 하도록 solution 함수를 완성해보세요.
- 1 ≤ n ≤ 100
// 모두 같은 조각 수를 먹는다. 따라서 약수의 개념으로 접근한다.
function solution(n) {
let answer = 0;
let pizzaCount = 1;
while(true) {
if(pizzaCount * 6 % n === 0) {
answer = pizzaCount;
break;
}
pizzaCount += 1;
}
return answer;
}
// 다른 사람의 풀이
function solution(n) {
let pizza = 1;
while (pizza * 6 % n) {
pizza++;
}
return pizza;
}
1) 주어진 피자를 남기지 않고 모두 같은 조각을 먹어야 하므로, 약수를 구하는 문제
2) 한 판 당 6조각이므로 결국, 6의 배수에 대한 약수를 묻는 문제이다.
3) 사람의 수 n으로 나누었을 때, 나머지가 0이면 된다.
<다른 사람의 풀이에 대한 이해>
반복문에 사용에 익숙해지자
피자 나눠 먹기(3)
머쓱이네 피자가게는 피자를 두 조각에서 열 조각까지 원하는 조각 수로 잘라줍니다. 피자 조각 수 slice와 피자를 먹는 사람의 수 n이 매개변수로 주어질 때, n명의 사람이 최소 한 조각 이상 피자를 먹으려면 최소 몇 판의 피자를 시켜야 하는지를 return 하도록 solution 함수를 완성해보세요.
- 2 ≤ slice ≤ 10
- 1 ≤ n ≤ 100
function solution(slice, n) {
return answer = Math.ceil(n / slice);
}
// 다른 사람의 풀이
function solution(slice, n) {
let answer = 0;
while(n > slice * answer){
answer++;
}
return answer;
}
피자 나눠 먹기(1)과 같은 문제
<다른 사람의 풀이>
반복문을 이용한 풀이에 익숙해지자
배열의 평균값
정수 배열 numbers가 매개변수로 주어집니다. numbers의 원소의 평균값을 return하도록 solution 함수를 완성해주세요.
- 0 ≤ numbers의 원소 ≤ 1,000
- 1 ≤ numbers의 길이 ≤ 100
- 정답의 소수 부분이 .0 또는 .5인 경우만 입력으로 주어집니다.
function solution(numbers) {
let sum = 0;
let cnt = 0;
while(cnt < numbers.length) {
sum += numbers[cnt];
cnt += 1;
}
return sum / numbers.length;
}
// 다른 사람의 풀이
function solution(numbers) {
return answer = numbers.reduce((a,b) => a+b, 0) / numbers.length;
}
1) 정답을 위한 변수를 선언한다. // let sum = 0;
2) 횟수를 체크하는 변수를 선언한다. // let cnt = 0;
3) sum에 반복문을 돌면서, 정수 배열 numbers의 값을 계속 더해준다.
4) 평균값은 전체 값 sum에 배열의 길이를 나누면 된다.
<다른 사람의 풀이에 대한 이해>
reduce()
참고 영상
'코딩테스트 > 프로그래머스 0단계 - 입문' 카테고리의 다른 글
프로그래머스 0단계 - Day6 문자열, 반복문, 출력, 배열, 조건문 (0) | 2024.03.16 |
---|---|
프로그래머스 0단계 - Day5 수학, 배열 (0) | 2024.03.15 |
프로그래머스 0단계 - Day3 사칙연산, 조건문, 배열 (0) | 2024.03.13 |
프로그래머스 0단계 - Day2 사칙연산, 조건문, 배열 (0) | 2024.03.11 |
프로그래머스 0단계 - Day1 사칙연산 (0) | 2024.03.11 |
댓글