[백준/BOJ] 1546번: 평균 (Python) 풀이Dev/PS2024. 6. 4. 23:57
Table of Contents

Baekjoon Online Judge (BOJ) 의 1546번 문제인 '평균' 을 풀어보았다.
[문제 정보]
https://www.acmicpc.net/problem/1546
문제 개요:
세준이는 기말고사를 망쳤다. 세준이는 점수를 조작해서 집에 가져가기로 했다. 일단 세준이는 자기 점수 중에 최댓값을 골랐다. 이 값을 M이라고 한다. 그리고 나서 모든 점수를 점수/M*100으로 고쳤다.
예를 들어, 세준이의 최고점이 70이고, 수학점수가 50이었으면 수학점수는 50/70*100이 되어 71.43점이 된다.
세준이의 성적을 위의 방법대로 새로 계산했을 때, 새로운 평균을 구하는 프로그램을 작성하시오.
[ 입력 ]
첫째 줄에 시험 본 과목의 개수 N이 주어진다. 이 값은 1000보다 작거나 같다.
둘째 줄에 세준이의 현재 성적이 주어진다. 이 값은 100보다 작거나 같은 음이 아닌 정수이고, 적어도 하나의 값은 0보다 크다.
[ 출력 ]
첫째 줄에 새로운 평균을 출력한다. 실제 정답과 출력값의 절대오차 또는 상대오차가 10^-2 이하이면 정답이다.
즉, 시험 본 과목들 중 가장 높은 점수를 찾고, 모든 점수에 '해당 과목의 원래 점수 / 과목들 중 최고 점수 * 100' 수식을 적용하여 점수들을 변동시킨다. 이후 조작된 점수로 구한 평균 점수를 출력하면 되는 문제이다.
알고리즘:
- 먼저 N(시험 본 과목 개수)을 입력받는다.
- 다음으로 시험 본 과목의 점수들을 입력받아 list 형태로 저장 후 gradeList 변수에 초기화해준다.
- 입력받은 점수들 중 가장 높은 점수를 max() 함수를 통해 찾아 maxGrade 변수에 초기화해준다.
- 점수의 평균값을 저장해줄 average 변수를 만들고 0(int)으로 초기화해준다.
- N번(과목 개수만큼) 반복하는 반복문을 만들고, 모든 점수에 '해당 과목의 원래 점수 / 과목들 중 최고 점수 * 100' 수식을 적용하여 점수를 변동시킨 후, 조작된 점수를 average 변수에 누적시킨다.
- 누적된 점수를 토대로 총 과목 수만큼 나누면 새로운 평균값이 도출되고, 이를 출력해준다.
코드:
N = int(input())
gradeList = list(map(int, input().split()))
maxGrade = max(gradeList)
average = 0
for i in range(0, N):
average += gradeList[i] / maxGrade * 100
print(average / N)

위 풀이에 대한 질문이나 틀린 정보가 있다면 댓글로 말씀해 주시면 감사하겠습니다!
728x90
'Dev > PS' 카테고리의 다른 글
| [백준/BOJ] 11654번: 아스키 코드 (Python) 풀이 (2) | 2024.06.06 |
|---|---|
| [백준/BOJ] 9086번: 문자열 (Python) 풀이 (0) | 2024.06.05 |
| [백준/BOJ] 10811번: 바구니 뒤집기 (Python) 풀이 (0) | 2024.06.04 |
| [백준/BOJ] 3052번: 나머지 (Python) 풀이 (0) | 2024.06.02 |
| [백준/BOJ] 5597번: 과제 안 내신 분..? (Python) 풀이 (0) | 2024.05.30 |
@KangJerry :: 강제리의 개발 이야기
실력있는 개발자가 되고싶은 22학번 대학생입니다.
포스팅이 좋았다면 "좋아요❤️" 또는 "구독👍🏻" 해주세요!