본문 바로가기
C#/C# : Baekjoon

[백준] C# : 평균은 넘겠지 (4344번)

by TODAYCODE 2021. 7. 30.
반응형

백준 단계별로 풀어보기 5단계 1차원배열 7번문제

 

4344번: 평균은 넘겠지

대학생 새내기들의 90%는 자신이 반에서 평균은 넘는다고 생각한다. 당신은 그들에게 슬픈 진실을 알려줘야 한다.

www.acmicpc.net

문제의 핵심

1. 풀이법을 생각했더라도 구현할 수 있는가?

2. 스트링포멧과 정수형나누기의 특징을 알고 있는가?

 


이제 문제들이 단순하게 풀어라가 아니라,

문제를 일단 이해부터하고 방법을 생각한 뒤에

그걸 코드로 구현할 수 있어? 를 묻고 있다.

 

문제의 핵심 1번으로 구현할 수 있는가라고 적었는데,

이는 필요한 문법들을 바로바로 떠올려서 활용할 수 있는지를 묻는 것이다.

 

이번 문제의 풀기 위해서는 2가지를 알아야한다.

 

1. int끼리 나누면 소수점이 발생하지 않는다.

고로, float형으로 전환해서 소수점을 얻어야한다.

 

2. 스트링포멧을 사용해서 소수점을 무조건 출력되게 만들어야한다.

 

1번 같은 경우에는 최종적으로 나누기를 수행할 때 float형으로 바꿔주기만하면 된다.

아마 int형만 사용하는 것에 너무 익숙해져서 나눌때 소수점이 발생하지 않는다는 것을 잊은 것 뿐일 것이다.

 

 

2번 같은 경우에는 반드시 알아둬야할 문법이다.

출력할 문자열을 적은 뒤에 :를 입력하고 포멧을 정할 수 있다.

0과 #을 사용해서 지정할 수 있다.

0.000 을 입력한다면 소수점 3째자리까지 출력을 강제한다.

 

 

 

정답 코드

using System;
using static System.Console;

namespace _1차원배열7
{
    class 평균은넘겠지
    {
        static void Main(string[] args)
        {
            // 테스트 케이스 입력받음
            int c = int.Parse(ReadLine());
            
            // c가 0보다 크면 계속 반복됨.
            while (c > 0)
            {
                // c를 매번 감소시켜서 총 c 만큼만 반복되게 만듦.
                c--;

                // 숫자를 입력받음. s[0]이 학생수, s[1]부터 점수
                string[] s = ReadLine().Split();

                int sum = 0;
                
                // 평균 구하기
                for (int i = 1; i < s.Length; i++)
                {
                    sum += int.Parse(s[i]);
                }
                int average = sum / int.Parse(s[0]);

                int result = 0;
                
                // 평균 넘는 사람 찾기
                for (int i = 1; i < s.Length; i++)
                {
                    if (int.Parse(s[i]) > average)
                    {
                        result++;
                    }
                }
                // int끼리는 나눠도 소수점이 발생하지 않으므로, float형으로 변환뒤 스트링포멧으로 출력
                WriteLine($"{(float)result / float.Parse(s[0]) * 100:0.000}%");
            }
        }
    }
}

 

 

 

 

반응형

'C# > C# : Baekjoon' 카테고리의 다른 글

[백준] C# : 숫자의 합 (11720번)  (0) 2021.08.04
[백준] C# : 아스키 코드 (11654번)  (0) 2021.08.04
[백준] C# : OX퀴즈 (8958번)  (0) 2021.07.30
[백준] C# : 평균 (1546번)  (0) 2021.07.29
[백준] C# : 나머지 (3052번)  (0) 2021.07.29

댓글