백준 1546

Hyerin·2022년 1월 9일
0
post-thumbnail

문제

https://www.acmicpc.net/problem/1546

C# 풀이

using System;
using System.IO;

namespace baekjoon
{
    class Program
    {
        static void Main(string[] args)
        {
            // 표준 입출력 스트림 reader,writer 만들기
            // 첫째 줄에 시험 본 과목의 개수 N 입력받기, int로 바꾸기
            // 둘째 줄에 세준이의 현재 성적 입력받기, 분리하기, int로 바꾸기
            // 세준이의 점수 중 최댓값 M 고르기
            // 모든 점수의 각 점수/M * 100 로 고쳐서 새로운 평균 구하기
            // 버퍼에 저장
            // 버퍼 한 번에 비우기

            StreamReader sr = new StreamReader(Console.OpenStandardInput());
            StreamWriter sw = new StreamWriter(Console.OpenStandardOutput());

            string strFirstInput = sr.ReadLine();
            int nSubjectNum = int.Parse(strFirstInput);

            string strSecondInput = sr.ReadLine();
            string[] strScores = strSecondInput.Split(' ');

            int[] nScoreArr = new int[nSubjectNum];

            for (int i = 0; i < nSubjectNum; i++) 
            {
                int nSecondNum = int.Parse(strScores[i]); // 40, 80, 60
                nScoreArr[i] = nSecondNum; // { 40, 80, 60 }
            }

            // nScoreArr = { 40, 80, 60 }
            int nMaxScore = nScoreArr[0];

            for (int i = 1; i < nSubjectNum; i++) 
            {
                if(nMaxScore < nScoreArr[i])
                {
                    nMaxScore = nScoreArr[i]; // 80
                }
            }

            // 모든 점수의 각 점수/M*100 로 고쳐서 새로운 평균 구하기
            double nSum = 0;
            double nNewScore;

            for (int i = 0; i < nSubjectNum; i++)
            {
                nNewScore = nScoreArr[i] / (double)nMaxScore * 100; // 50, 100, 75
                nSum += nNewScore;
            }

            double nNewAverage = Math.Round(nSum / nSubjectNum, 3); // 소수세째자리 반올림 
            sw.WriteLine(nNewAverage);

            sw.Flush();
            sr.Close();
            sw.Close();
        }
    }
}

0개의 댓글