

이번 문제는 입력받은 점수들을 활용해 평균을 구하되, 문제에서 제시한 변형된 공식을 적용해 계산하는 문제였다. 크게 어렵지는 않았지만, 주의해야 할 점이 있었다.
점수와 합계를 int로 처리했기 때문에 평균을 계산하는 과정에서 형변환이 필요했다. 단순히 결과를 double 변수에 담는 것만으로는 실수 연산이 이루어지지 않으며, 연산 과정이 정수로 수행되면 이미 소수점 이하 값이 손실된다. 따라서 계산 도중 double로 형변환을 적용해 연산 단계부터 실수 연산이 이루어지도록 했다.
또한 여러 값을 동시에 처리해야 하는 만큼 반복문을 여러 번 사용할 수도 있었지만, 합계와 최대값을 하나의 반복문 안에서 함께 계산하도록 구성했다. 이는 불필요한 반복을 줄이고 코드의 가독성과 효율성을 높이기 위함이다.
이번 문제에서도 Array.Sum과 Array.Max를 사용하지 않고 네이티브 구현 방식을 선택했다. 해당 메서드를 사용하면 간단히 해결할 수 있지만, 기초를 다진다는 생각으로 내부 동작을 직접 구현해보았다.
int subJectIndex = int.Parse(Console.ReadLine());
string[] testScore = Console.ReadLine().Split(' ');
int addScore = 0; //점수 합계
int M = 0; //최대 점수
// Array.Sum, Array.Max를 사용하지 않고 직접 구현
for (int i = 0; i< subJectIndex; i++)
{
int score = int.Parse(testScore[i]);
addScore += score;
//현재 점수가 기존 최대값보다 크면 갱신
if (M < score)
{
M = score;
}
}
//(점수 / 최대점수 * 100) 기준으로 변환한 뒤 평균 계산
double average = ((double)addScore / M * 100)/subJectIndex;
Console.WriteLine(average);



Enumerable.Max Method (System.Linq)
Returns the maximum value in a sequence of values.
learn.microsoft.com
Enumerable.Sum 메서드 (System.Linq)
숫자 값 시퀀스의 합을 계산합니다.
learn.microsoft.com
'코딩 테스트 > 백준' 카테고리의 다른 글
| 백준 - [단계별로 풀어보기 문자열] 2743 단어 길이 재기 (0) | 2026.03.06 |
|---|---|
| 백준 - [단계별로 풀어보기 문자열] 27866 문자와 문자열 (0) | 2026.03.05 |
| 백준 - [단계별로 풀어보기 1차원 배열] 10811 바구니 뒤집기 (0) | 2026.03.03 |
| 백준 - [단계별로 풀어보기 1차원 배열] 3052 나머지 (0) | 2026.03.02 |
| 백준 - [단계별로 풀어보기 1차원 배열] 5597 과제 안 내신분? (0) | 2026.03.01 |