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인 경우 예외를 발생시키므로 배열이 비어 있지 않다는 전제에서 사용해야 한다.