C#

[TIL] C# 프로그래머스_ 피자 나눠먹기(3), 배열의 평균

unihee1 2025. 2. 10. 21:19

1. 피자 나눠먹기(3)

  • 문제
머쓱이네 피자가게는 피자를 두 조각에서 열 조각까지 원하는 조각 수로 잘라줍니다. 피자 조각 수 slice와 피자를 먹는 사람의 수 n이 매개변수로 주어질 때, n명의 사람이 최소 한 조각 이상 피자를 먹으려면 최소 몇 판의 피자를 시켜야 하는지를 return 하도록 solution 함수를 완성해보세요.

 

  • 내가 작성한 코드
using System;

public class Solution {
    public int solution(int slice, int n) {
        int i = 1;
        while(true)
        {
            if(slice*i>=n)
            {
                return i;
                break;
            }
            i++;
        }
    }
}

 

  • while(true) 루프:
    • while(true)는 무한 루프입니다. 조건이 항상 true이기 때문에, 루프는 return 문이 실행될 때까지 계속 반복된다.
  • if(slice * i >= n):
    • i개의 피자에서 총 피자 조각 수를 계산하는 식으로. i가 피자의 개수이고 slice는 한 피자당 조각 수이다.
    • i i개의 피자가 n명에게 모두 나눠줄 수 있는 최소 피자 개수인지를 확인한다.
  • return i;:
    • slice * i >= n가 참이면 i는 최소 필요한 피자 개수이다.
  • 개선된 코드

 

using System;
public class Solution {
   public int solution(int slice, int n) {
       return (int)Math.Ceiling(n / (double)slice);
   }
}

 

  • n / (double)slice:
    • 하지만, n / slice는 소수점을 반환할 수 있기때문에 소수점 이하를 올림 처리해야 한다.
  • (double)slice:
    • int 타입으로 나누면 결과가 정수형으로 강제 변환되어 소수점 아래가 잘리게 되기 때문에 이를 slice를 double로 변환합니다.
  • Math.Ceiling():
    • Math.Ceiling()은 주어진 실수 값을 올림하는 함수이다.
    • 이를 사용하여 필요한 피자 개수를 소수점 이하를 올림하여 계산한다.

 


 

2. 배열의 평균

  • 문제
정수 배열 numbers가 매개변수로 주어집니다. numbers의 원소의 평균값을 return하도록 solution 함수를 완성해주세요.

 

  • 내가 작성한 코드
using System;

public class Solution {
    public double solution(int[] numbers) {
        double sum = 0;  
        for (int i = 0; i < numbers.Length; i++) {
            sum += numbers[i];  
        }
        double result = sum / numbers.Length;  
        return result;  
    }
}

 

  • for (int i = 0; i < numbers.Length; i++):
    • for 루프는 numbers 배열의 각 원소를 순차적으로 접근하기 위해 사용된다. i는 배열의 인덱스를 나타내며 numbers.Length는 배열의 길이를 의미한다.
  • sum += numbers[i];:
    • 배열 numbers에서 i번째 원소를 가져와 sum에 더한다.
  • double result = sum / numbers.Length;:
    • 배열의 합을 배열의 길이로 나누어 평균을 계산한다.

 

  • 개선된 코드
using System;
using System.Linq;
public class Solution {
     public double solution(int[] numbers) {
         return numbers.Average();
     }
}

 

  • numbers.Average();:
    • Average()는 LINQ에서 제공하는 메서드로 배열이나 컬렉션의 평균 값을 계산한다.
    • 이 메서드는 배열의 크기가 0인 경우 예외를 발생시키므로 배열이 비어 있지 않다는 전제에서 사용해야 한다.