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
'BAEKJOON > 수학' 카테고리의 다른 글
백준 1929번 [소수 구하기](C++)-yes6686- 티스토리 (1) | 2024.01.02 |
---|---|
백준 1676번 [팩토리얼 0의 개수](C++)-yes6686- 티스토리 (0) | 2023.12.21 |
백준 11720번 [숫자의 합](C++)-yes6686- 티스토리 (0) | 2023.12.21 |
백준 10998번 [A×B](C++)-yes6686- 티스토리 (0) | 2023.12.21 |
백준 10952번 [A+B - 5](C++)-yes6686- 티스토리 (0) | 2023.12.21 |