Winnie The Pooh Bear 코딩테스트 입문_수학,배열

코딩테스트

코딩테스트 입문_수학,배열

코딩은 처음이라 2023. 5. 19. 23:40

“ 지연되는 프로젝트에 인력을 더 투입하면 오히려 더 늦어진다. ”

- Frederick Philips Brooks
Mythical Man-Month 저자
728x90
반응형

코딩테스트 입문_수학,배열

 

 

 

 

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인 경우로 반올림 하여 반환합니다.

 

 

출처

 

반응형