문제
풀이
(1) 문제 분석하기
- 모든 점수를 입력받은 후, 최고점 별도로 저장해야 함
- 최고점으로 다시 계산해야 하는 변환 점수는 계산식을 정리하면 한 번에 평균을 구할 수 있음
( A / M * 100 + B / M * 100 + C / M * 100 ) / 3 = ( A + B + C ) * 100 / M / 3
(2) 손으로 풀어보기
- 모든 점수를 1차원 배열에 저장
- 최고 점수와 점수의 총합을 구함
- '총합 * 100 / 최고 점수 / 과목 수'를 계산
(3) 슈도코드 작성하기
변수 N에 과목의 수 입력받기
길이가 N인 1차원 배열 A[] 선언하기
for(A[] 길이만큼) {
A[i]에 각 점수 저장하기
}
for(A[] 길이만큼) {
변수 max에 최고 점수, 변수 sum에 총합 저장하기
}
sum * 100 / max / N 출력하기
(4) 코드 구현하기
import java.util.Scanner;
public class Average1546 {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
int N = sc.nextInt();
// 생략가능
// int A[] = new int[N];
// for (int i = 0; i < N; i++) {
// A[i] = sc.nextInt();
// }
long sum = 0;
long max = 0;
for (int i = 0; i < N; i++) {
int temp = sc.nextInt();
if (temp > max) {
max = temp;
}
sum += temp;
}
System.out.println(sum * 100.0 / max / N);
}
}
1546번: 평균
첫째 줄에 시험 본 과목의 개수 N이 주어진다. 이 값은 1000보다 작거나 같다. 둘째 줄에 세준이의 현재 성적이 주어진다. 이 값은 100보다 작거나 같은 음이 아닌 정수이고, 적어도 하나의 값은 0보
www.acmicpc.net
※ 이 내용은 Do it! 알고리즘 코딩테스트 - 실전문제 풀이(JAVA) 강의를 듣고 정리한 내용입니다.
'📊 Algorithm&SQL' 카테고리의 다른 글
[Java/백준] 연속된 자연수의 합 구하기 #2018 (0) | 2022.10.03 |
---|---|
[Java/백준] 구간 합 구하기 #11659 (1) | 2022.10.01 |
[Java/백준] 숫자의 합 #11720 (0) | 2022.09.30 |
[Java/코드업] 1008 ~ 1012 유니코드, charAt(), printf() 형식 지정자 (0) | 2022.06.22 |
[Java/백준] 개 #10172 (0) | 2022.03.18 |