본문 바로가기

BAEKJOON/수학

백준 1546번 [평균](C++)-yes6686- 티스토리

728x90
SMALL

백준 문제 풀이: 1546 [평균]


문제 링크: https://www.acmicpc.net/problem/1546

문제 설명:

n개의 시험 점수가 주어졌을 때, 가장 높은 점수를 기준으로 점수를 조정하여 새로운 평균을 계산하는 문제입니다.

점수 조정은 점수 x를 (x / max_score) * 100으로 바꾸는 방식입니다. 새로운 평균을 구해 출력하세요.


문제 해결 코드


#include <iostream>
using namespace std;

double arr[1001];

int main() {
    int n;
    cin >> n;

    for (int i = 0; i < n; i++) {
        cin >> arr[i];
    }

    int max = -1;
    for (int i = 0; i < n; i++) {
        if (max < arr[i]) {
            max = arr[i];
        }
    }

    double sum = 0;
    for (int i = 0; i < n; i++) {
        sum += (arr[i] / max * 100);
    }

    cout << sum / n;
}

코드 설명

  • 핵심 아이디어: 점수를 가장 높은 점수로 나누어 비율을 구한 뒤, 이를 기준으로 새로운 평균을 계산합니다.
  • 구현 세부사항:
    • max: 입력받은 점수 중 가장 높은 점수.
    • sum: 변환된 점수들의 합.
    • 최종적으로 sum / n을 계산하여 새로운 평균을 출력합니다.
  • 시간 복잡도: O(n)
    • n개의 점수를 입력받고, 최대값을 구하고, 변환하여 합을 구하는 각 과정이 O(n)입니다.

결과

입력된 점수에 대해 조정된 점수를 기준으로 새로운 평균을 출력합니다. 점수 변환 및 평균 계산을 효율적으로 수행했습니다.

다른 질문이나 접근 방식에 대한 논의가 필요하면 댓글로 알려주세요!

728x90
LIST