[백준] 4344번 평균은 넘겠지 풀이 코드 (C/C++/Java 자바/Python 파이썬)

풀이

C

조건에 맞는 소수점 형태에 유의하며 출력합니다. %.3f 형태로 출력하면 소수점 아래 4번째에서 반올림하여 3번째 자리까지 출력합니다.

C++

조건에 맞는 소수점 형태에 유의하며 출력합니다. cout<<fixed, cout.precision(3) 으로 소수점 아래 4번째에서 반올림하여 3번째 자리까지 출력합니다. cout.precision()은 소수점 위 자리를 포함한 출력의 전체 길이를 정하는 함수이므로, 적용 범위를 소수점 아래만으로 한정하는 cout<<fixed 없이 단독으로 사용하면 원하는 출력이 나오지 않습니다.

Java

조건에 맞는 소수점 형태에 유의하며 출력합니다. String.format(“%.3f”, ) 형태로 출력하면 소수점 아래 4번째에서 반올림하여 3번째 자리까지 출력합니다.

Python

조건에 맞는 소수점 형태에 유의하며 출력합니다. ‘{:.3f}’.format() 형태로 출력하면 소수점 아래 4번째에서 반올림하여 3번째 자리까지 출력합니다.


코드

C

#include <stdio.h>

int main() {
    int n, m, i, j, sum, score[1000];
    float avg;
    
    scanf("%d", &n);
    for (i = 0; i < n; i++){
        scanf("%d", &m);
        sum = 0;
        for (j = 0; j < m; j++){
            scanf("%d", &score[j]);
            sum += score[j];
        }
        avg = (float)sum/(float)m;
        sum = 0;
        for (j = 0; j < m; j++){
            if(avg < score[j]){
                sum++;
            }
        }
        avg = (float)sum/(float)m*100;
        printf("%.3f%%\n", avg);
    }
    return 0;
}

C++

#include <iostream>
using namespace std;

int main() {
    int n, m, i, j, sum, score[1000];
    float avg;
    
    cin>>n;
    for (i = 0; i < n; i++){
        cin>>m;
        sum = 0;
        for (j = 0; j < m; j++){
            cin>>score[j];
            sum += score[j];
        }
        avg = (float)sum/(float)m;
        sum = 0;
        for (j = 0; j < m; j++){
            if(avg < score[j]){
                sum++;
            }
        }
        avg = (float)sum/(float)m*100;
        cout << fixed;
        cout.precision(3);
        cout<<avg<<'%'<<endl;
    }
    return 0;
}

Java

import java.util.Arrays;
import java.util.Scanner;

public class Main {
    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        int m, sum;
        float avg;
        
        int n = sc.nextInt();
        for (int i = 0; i < n; i++){
            sum = 0;
            m = sc.nextInt();
            int[] score = new int[m];
            for(int j = 0; j < m; j++){
                int s = sc.nextInt();
                score[j] = s;
                sum += score[j];
            }
            avg = (float)sum/(float)m;
            sum = 0;
            for(int j = 0; j < m; j++){
                if(avg < score[j]){
                sum++;
            }
            }
            avg = (float)sum/(float)m*100;
            System.out.println(String.format("%.3f", avg)+"%");
        }
    }
}

Python

n = int(input())
for _ in range(n):
    score = list(map(int, input().split()))
    avg = sum(score[1:]) / score[0]
    sm = 0
    for i in score[1:]:
        if i > avg:
            sm += 1
    avg = sm/score[0]*100
    
    print('{:.3f}%'.format(avg))

문제 출처

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

Related posts

블로그 이사

[Codeforces] 50A Domino piling 풀이 코드 (C/C++/Java /Python)

[Codeforces] 1538B Friends and Candies 풀이 코드 (C/C++/Java /Python)