https://www.acmicpc.net/problem/1546
이 문제는, 문제에 제시된 조건대로 새로운 점수를 각각 구한 후 그 새로운 점수들의 평균값을 내는 문제이다.
다음은 나의 풀이이다.
using System;
using System.Linq;
namespace CodingTest.Baekjoon
{
public class B_1546
{
public static void Main(String[] args)
{
int n = int.Parse(Console.ReadLine());
string[] input = Console.ReadLine().Split(' ');
float[] scores = Array.ConvertAll(input, float.Parse);
float max = scores.Max();
float sum = 0;
for (int i = 0; i < n; i++)
{
scores[i] = scores[i] / max * 100;
sum += scores[i];
}
Console.WriteLine(sum / n);
}
}
}
<알아둬야할 것>
1. Array.ConvertAll()
Array.ConvertAll<TInput, TOutput>는 C#에서 배열의 각 요소를 변환하여 새로운 배열을 반환하는 메서드이다.
예) 문자열 배열 -> 정수 배열로 변환
string[] input = { "1", "2", "3" };
int[] result = Array.ConvertAll(input, int.Parse);
예) 정수배열 -> 문자열 배열로 변환
string[] input = { "1", "2", "3" };
int[] result = Array.ConvertAll(input, int.Parse);
예) 사용자 정의 형식 간 변환
double[] input = { 1.1, 2.2, 3.3 };
int[] result = Array.ConvertAll(input, x => (int)x); // double → int
이 메서드를 사용하여 간단하게 배열 전체를 형변환 할 수 있으니 꼭 기억하자.
2. C# Linq 집계함수
using System.Linq를 명시해주면 LINQ 메서드를 사용할 수 있다. (Enumerable 메서드)
.Max()
.Min()
.Average()
.Sum()
Console.WriteLine(scores.Average());
즉, 내가 작성한 코드에서 출력문을 다음과 같이 바꿀 수 있으며, 결과는 동일하다
'코딩일기' 카테고리의 다른 글
| [알고리즘] 백준#12891 DNA 비밀번호 - C# (0) | 2025.05.07 |
|---|---|
| [알고리즘] 백준 #2018 수들의 합5 - C# (0) | 2025.05.07 |
| [알고리즘] 백준 #11720 숫자의 합 - C# (0) | 2025.05.01 |
| [알고리즘 순서도] (0) | 2024.09.09 |
| [알고리즘] 백준 #3004 체스판조각 -Java (0) | 2022.03.03 |